From b941f0a3e439ffb5c0968cd729267e21a4f50cba Mon Sep 17 00:00:00 2001
From: Karson <karsonzhang@163.com>
Date: Fri, 6 Apr 2018 21:39:12 +0800
Subject: [PATCH] 新增插件分类、免费插件搜索 新增全局的Template 新增自定义通用搜索表单内容 新增通用搜索按钮显示配置 新增单独清除模板、插件缓存 新增后台登录失败重试配置 优化通用搜索,搜索元素支持自动绑定元素事件 优化本地插件显示 优化前台首页和API文档字体显示 修复元素验证指定data-target不生效的BUG 修复插件命令行添加--force不生效的BUG 修复noNeedLogin和noNeedRight大小写的BUG 修复fieldlist无法挺拽的BUG 修复一键CRUD后指定字段显示后无法显示关联数据的BUG

---
 application/admin/command/Addon.php               |  208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------
 application/admin/command/Api/template/index.html |   10 +++++++++-
 application/admin/command/Crud.php                |   12 +++++++++---
 application/admin/controller/Addon.php            |  216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------
 application/admin/controller/Ajax.php             |  100 +++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------
 application/admin/lang/zh-cn/addon.php            |    2 ++
 application/admin/lang/zh-cn/index.php            |    4 ++++
 application/admin/library/Auth.php                |    7 ++++---
 application/admin/view/addon/config.html          |   13 +++----------
 application/admin/view/addon/index.html           |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
 application/admin/view/common/header.html         |   26 ++++++++++++++++++--------
 application/admin/view/index/login.html           |    4 ++--
 application/common/controller/Backend.php         |    3 ++-
 application/common/library/Auth.php               |    2 ++
 application/common/model/Category.php             |    7 +++++++
 application/config.php                            |   16 +++++++++-------
 public/api.html                                   |   12 ++++++++++--
 public/assets/css/backend.css                     |    4 +++-
 public/assets/css/backend.min.css                 |    2 +-
 public/assets/css/index.css                       |    5 ++++-
 public/assets/js/backend.js                       |   15 +++++++++------
 public/assets/js/backend/addon.js                 |   52 ++++++++++++++++++++++++++++++++++++----------------
 public/assets/js/backend/index.js                 |    3 ++-
 public/assets/js/bootstrap-table-commonsearch.js  |  159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------
 public/assets/js/frontend.js                      |    4 +++-
 public/assets/js/require-backend.min.js           | 8989 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 public/assets/js/require-form.js                  |   19 ++++++++++++++-----
 public/assets/js/require-frontend.min.js          |    6 +++++-
 public/assets/less/backend.less                   |    4 ++++
 29 files changed, 4150 insertions(+), 5849 deletions(-)

diff --git a/application/admin/command/Addon.php b/application/admin/command/Addon.php
index e2cde5f..302ced6 100644
--- a/application/admin/command/Addon.php
+++ b/application/admin/command/Addon.php
@@ -19,14 +19,14 @@ class Addon extends Command
     protected function configure()
     {
         $this
-                ->setName('addon')
-                ->addOption('name', 'a', Option::VALUE_REQUIRED, 'addon name', null)
-                ->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package)', 'create')
-                ->addOption('force', 'f', Option::VALUE_OPTIONAL, 'force override', null)
-                ->addOption('release', 'r', Option::VALUE_OPTIONAL, 'addon release version', null)
-                ->addOption('uid', 'u', Option::VALUE_OPTIONAL, 'fastadmin uid', null)
-                ->addOption('token', 't', Option::VALUE_OPTIONAL, 'fastadmin token', null)
-                ->setDescription('Addon manager');
+            ->setName('addon')
+            ->addOption('name', 'a', Option::VALUE_REQUIRED, 'addon name', null)
+            ->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package)', 'create')
+            ->addOption('force', 'f', Option::VALUE_OPTIONAL, 'force override', null)
+            ->addOption('release', 'r', Option::VALUE_OPTIONAL, 'addon release version', null)
+            ->addOption('uid', 'u', Option::VALUE_OPTIONAL, 'fastadmin uid', null)
+            ->addOption('token', 't', Option::VALUE_OPTIONAL, 'fastadmin token', null)
+            ->setDescription('Addon manager');
     }
 
     protected function execute(Input $input, Output $output)
@@ -44,12 +44,10 @@ class Addon extends Command
 
         include dirname(__DIR__) . DS . 'common.php';
 
-        if (!$name)
-        {
+        if (!$name) {
             throw new Exception('Addon name could not be empty');
         }
-        if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package']))
-        {
+        if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package'])) {
             throw new Exception('Please input correct action name');
         }
 
@@ -57,17 +55,14 @@ class Addon extends Command
         Db::execute("SELECT 1");
 
         $addonDir = ADDON_PATH . $name . DS;
-        switch ($action)
-        {
+        switch ($action) {
             case 'create':
                 //非覆盖模式时如果存在则报错
-                if (is_dir($addonDir) && !$force)
-                {
+                if (is_dir($addonDir) && !$force) {
                     throw new Exception("addon already exists!\nIf you need to create again, use the parameter --force=true ");
                 }
                 //如果存在先移除
-                if (is_dir($addonDir))
-                {
+                if (is_dir($addonDir)) {
                     rmdirs($addonDir);
                 }
                 mkdir($addonDir);
@@ -76,16 +71,12 @@ class Addon extends Command
                 $createMenu = $this->getCreateMenu($menuList);
                 $prefix = Config::get('database.prefix');
                 $createTableSql = '';
-                try
-                {
+                try {
                     $result = Db::query("SHOW CREATE TABLE `" . $prefix . $name . "`;");
-                    if (isset($result[0]) && isset($result[0]['Create Table']))
-                    {
+                    if (isset($result[0]) && isset($result[0]['Create Table'])) {
                         $createTableSql = $result[0]['Create Table'];
                     }
-                }
-                catch (PDOException $e)
-                {
+                } catch (PDOException $e) {
 
                 }
 
@@ -102,8 +93,7 @@ class Addon extends Command
                 $this->writeToFile("config", $data, $addonDir . 'config.php');
                 $this->writeToFile("info", $data, $addonDir . 'info.ini');
                 $this->writeToFile("controller", $data, $addonDir . 'controller' . DS . 'Index.php');
-                if ($createTableSql)
-                {
+                if ($createTableSql) {
                     $createTableSql = str_replace("`" . $prefix, '`__PREFIX__', $createTableSql);
                     file_put_contents($addonDir . 'install.sql', $createTableSql);
                 }
@@ -112,75 +102,61 @@ class Addon extends Command
                 break;
             case 'disable':
             case 'enable':
-                try
-                {
+                try {
                     //调用启用、禁用的方法
                     Service::$action($name, 0);
-                }
-                catch (AddonException $e)
-                {
-                    if ($e->getCode() != -3)
-                    {
+                } catch (AddonException $e) {
+                    if ($e->getCode() != -3) {
                         throw new Exception($e->getMessage());
                     }
-                    //如果有冲突文件则提醒
-                    $data = $e->getData();
-                    foreach ($data['conflictlist'] as $k => $v)
-                    {
-                        $output->warning($v);
-                    }
-                    $output->info("Are you sure you want to " . ($action == 'enable' ? 'override' : 'delete') . " all those files?  Type 'yes' to continue: ");
-                    $line = fgets(STDIN);
-                    if (trim($line) != 'yes')
-                    {
-                        throw new Exception("Operation is aborted!");
+                    if (!$force) {
+                        //如果有冲突文件则提醒
+                        $data = $e->getData();
+                        foreach ($data['conflictlist'] as $k => $v) {
+                            $output->warning($v);
+                        }
+                        $output->info("Are you sure you want to " . ($action == 'enable' ? 'override' : 'delete') . " all those files?  Type 'yes' to continue: ");
+                        $line = fgets(STDIN);
+                        if (trim($line) != 'yes') {
+                            throw new Exception("Operation is aborted!");
+                        }
                     }
                     //调用启用、禁用的方法
                     Service::$action($name, 1);
-                }
-                catch (Exception $e)
-                {
+                } catch (Exception $e) {
                     throw new Exception($e->getMessage());
                 }
                 $output->info(ucfirst($action) . " Successed!");
                 break;
             case 'install':
                 //非覆盖模式时如果存在则报错
-                if (is_dir($addonDir) && !$force)
-                {
+                if (is_dir($addonDir) && !$force) {
                     throw new Exception("addon already exists!\nIf you need to install again, use the parameter --force=true ");
                 }
                 //如果存在先移除
-                if (is_dir($addonDir))
-                {
+                if (is_dir($addonDir)) {
                     rmdirs($addonDir);
                 }
-                try
-                {
+                try {
                     Service::install($name, 0, ['version' => $release]);
-                }
-                catch (AddonException $e)
-                {
-                    if ($e->getCode() != -3)
-                    {
+                } catch (AddonException $e) {
+                    if ($e->getCode() != -3) {
                         throw new Exception($e->getMessage());
                     }
-                    //如果有冲突文件则提醒
-                    $data = $e->getData();
-                    foreach ($data['conflictlist'] as $k => $v)
-                    {
-                        $output->warning($v);
-                    }
-                    $output->info("Are you sure you want to override all those files?  Type 'yes' to continue: ");
-                    $line = fgets(STDIN);
-                    if (trim($line) != 'yes')
-                    {
-                        throw new Exception("Operation is aborted!");
+                    if (!$force) {
+                        //如果有冲突文件则提醒
+                        $data = $e->getData();
+                        foreach ($data['conflictlist'] as $k => $v) {
+                            $output->warning($v);
+                        }
+                        $output->info("Are you sure you want to override all those files?  Type 'yes' to continue: ");
+                        $line = fgets(STDIN);
+                        if (trim($line) != 'yes') {
+                            throw new Exception("Operation is aborted!");
+                        }
                     }
                     Service::install($name, 1, ['version' => $release, 'uid' => $uid, 'token' => $token]);
-                }
-                catch (Exception $e)
-                {
+                } catch (Exception $e) {
                     throw new Exception($e->getMessage());
                 }
 
@@ -188,36 +164,29 @@ class Addon extends Command
                 break;
             case 'uninstall':
                 //非覆盖模式时如果存在则报错
-                if (!$force)
-                {
+                if (!$force) {
                     throw new Exception("If you need to uninstall addon, use the parameter --force=true ");
                 }
-                try
-                {
+                try {
                     Service::uninstall($name, 0);
-                }
-                catch (AddonException $e)
-                {
-                    if ($e->getCode() != -3)
-                    {
+                } catch (AddonException $e) {
+                    if ($e->getCode() != -3) {
                         throw new Exception($e->getMessage());
                     }
-                    //如果有冲突文件则提醒
-                    $data = $e->getData();
-                    foreach ($data['conflictlist'] as $k => $v)
-                    {
-                        $output->warning($v);
-                    }
-                    $output->info("Are you sure you want to delete all those files?  Type 'yes' to continue: ");
-                    $line = fgets(STDIN);
-                    if (trim($line) != 'yes')
-                    {
-                        throw new Exception("Operation is aborted!");
+                    if (!$force) {
+                        //如果有冲突文件则提醒
+                        $data = $e->getData();
+                        foreach ($data['conflictlist'] as $k => $v) {
+                            $output->warning($v);
+                        }
+                        $output->info("Are you sure you want to delete all those files?  Type 'yes' to continue: ");
+                        $line = fgets(STDIN);
+                        if (trim($line) != 'yes') {
+                            throw new Exception("Operation is aborted!");
+                        }
                     }
                     Service::uninstall($name, 1);
-                }
-                catch (Exception $e)
-                {
+                } catch (Exception $e) {
                     throw new Exception($e->getMessage());
                 }
 
@@ -233,53 +202,44 @@ class Addon extends Command
                 break;
             case 'package':
                 $infoFile = $addonDir . 'info.ini';
-                if (!is_file($infoFile))
-                {
+                if (!is_file($infoFile)) {
                     throw new Exception(__('Addon info file was not found'));
                 }
 
                 $info = get_addon_info($name);
-                if (!$info)
-                {
+                if (!$info) {
                     throw new Exception(__('Addon info file data incorrect'));
                 }
                 $infoname = isset($info['name']) ? $info['name'] : '';
-                if (!$infoname || !preg_match("/^[a-z]+$/i", $infoname) || $infoname != $name)
-                {
+                if (!$infoname || !preg_match("/^[a-z]+$/i", $infoname) || $infoname != $name) {
                     throw new Exception(__('Addon info name incorrect'));
                 }
 
                 $infoversion = isset($info['version']) ? $info['version'] : '';
-                if (!$infoversion || !preg_match("/^\d+\.\d+\.\d+$/i", $infoversion))
-                {
+                if (!$infoversion || !preg_match("/^\d+\.\d+\.\d+$/i", $infoversion)) {
                     throw new Exception(__('Addon info version incorrect'));
                 }
 
                 $addonTmpDir = RUNTIME_PATH . 'addons' . DS;
-                if (!is_dir($addonTmpDir))
-                {
+                if (!is_dir($addonTmpDir)) {
                     @mkdir($addonTmpDir, 0755, true);
                 }
                 $addonFile = $addonTmpDir . $infoname . '-' . $infoversion . '.zip';
-                if (!class_exists('ZipArchive'))
-                {
+                if (!class_exists('ZipArchive')) {
                     throw new Exception(__('ZinArchive not install'));
                 }
                 $zip = new \ZipArchive;
                 $zip->open($addonFile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
 
                 $files = new \RecursiveIteratorIterator(
-                        new \RecursiveDirectoryIterator($addonDir), \RecursiveIteratorIterator::LEAVES_ONLY
+                    new \RecursiveDirectoryIterator($addonDir), \RecursiveIteratorIterator::LEAVES_ONLY
                 );
 
-                foreach ($files as $name => $file)
-                {
-                    if (!$file->isDir())
-                    {
+                foreach ($files as $name => $file) {
+                    if (!$file->isDir()) {
                         $filePath = $file->getRealPath();
                         $relativePath = substr($filePath, strlen($addonDir));
-                        if (!in_array($file->getFilename(), ['.git', '.DS_Store', 'Thumbs.db']))
-                        {
+                        if (!in_array($file->getFilename(), ['.git', '.DS_Store', 'Thumbs.db'])) {
                             $zip->addFile($filePath, $relativePath);
                         }
                     }
@@ -301,22 +261,18 @@ class Addon extends Command
     protected function getCreateMenu($menu)
     {
         $result = [];
-        foreach ($menu as $k => & $v)
-        {
+        foreach ($menu as $k => & $v) {
             $arr = [
                 'name'  => $v['name'],
                 'title' => $v['title'],
             ];
-            if ($v['icon'] != 'fa fa-circle-o')
-            {
+            if ($v['icon'] != 'fa fa-circle-o') {
                 $arr['icon'] = $v['icon'];
             }
-            if ($v['ismenu'])
-            {
+            if ($v['ismenu']) {
                 $arr['ismenu'] = $v['ismenu'];
             }
-            if (isset($v['childlist']) && $v['childlist'])
-            {
+            if (isset($v['childlist']) && $v['childlist']) {
                 $arr['sublist'] = $this->getCreateMenu($v['childlist']);
             }
             $result[] = $arr;
@@ -334,16 +290,14 @@ class Addon extends Command
     protected function writeToFile($name, $data, $pathname)
     {
         $search = $replace = [];
-        foreach ($data as $k => $v)
-        {
+        foreach ($data as $k => $v) {
             $search[] = "{%{$k}%}";
             $replace[] = $v;
         }
         $stub = file_get_contents($this->getStub($name));
         $content = str_replace($search, $replace, $stub);
 
-        if (!is_dir(dirname($pathname)))
-        {
+        if (!is_dir(dirname($pathname))) {
             mkdir(strtolower(dirname($pathname)), 0755, true);
         }
         return file_put_contents($pathname, $content);
diff --git a/application/admin/command/Api/template/index.html b/application/admin/command/Api/template/index.html
index aaa73b3..1fc0b18 100755
--- a/application/admin/command/Api/template/index.html
+++ b/application/admin/command/Api/template/index.html
@@ -9,7 +9,15 @@
         <title>{$config.title}</title>
         <link href="https://cdn.bootcss.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
         <style type="text/css">
-            body      { padding-top: 70px; margin-bottom: 15px; }
+            body {
+                padding-top: 70px; margin-bottom: 15px;
+                -webkit-font-smoothing: antialiased;
+                -moz-osx-font-smoothing: grayscale;
+                font-family: "Roboto", "SF Pro SC", "SF Pro Display", "SF Pro Icons", "PingFang SC", BlinkMacSystemFont, -apple-system, "Segoe UI", "Microsoft Yahei", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+                font-weight: 400;
+            }
+            h2        { font-size: 1.6em; }
+            hr        { margin-top: 10px; }
             .tab-pane { padding-top: 10px; }
             .mt0      { margin-top: 0px; }
             .footer   { font-size: 12px; color: #666; }
diff --git a/application/admin/command/Crud.php b/application/admin/command/Crud.php
index fef1e16..98b7292 100755
--- a/application/admin/command/Crud.php
+++ b/application/admin/command/Crud.php
@@ -654,9 +654,10 @@ class Crud extends Command
                         $priDefined = TRUE;
                         $javascriptList[] = "{checkbox: true}";
                     }
-                    //构造JS列信息
-                    $javascriptList[] = $this->getJsColumn($field, $v['DATA_TYPE'], $inputType && in_array($inputType, ['select', 'checkbox', 'radio']) ? '_text' : '', $itemArr);
-
+                    if (!$fields || in_array($field, explode(',', $fields))) {
+                        //构造JS列信息
+                        $javascriptList[] = $this->getJsColumn($field, $v['DATA_TYPE'], $inputType && in_array($inputType, ['select', 'checkbox', 'radio']) ? '_text' : '', $itemArr);
+                    }
                     //排序方式,如果有指定排序字段,否则按主键排序
                     $order = $field == $this->sortField ? $this->sortField : $order;
                 }
@@ -767,6 +768,11 @@ class Crud extends Command
                     //构造关联模型的方法
                     $relationMethodList[] = $this->getReplacedStub('mixins' . DS . 'modelrelationmethod', $relation);
 
+                    //如果设置了显示主表字段,则必须显式将关联表字段显示
+                    if ($fields) {
+                        $relationVisibleFieldList[] = "\$row->visible(['{$relation['relationMethod']}']);";
+                    }
+
                     //显示的字段
                     if ($relation['relationFields']) {
                         $relationVisibleFieldList[] = "\$row->getRelation('" . $relation['relationMethod'] . "')->visible(['" . implode("','", $relation['relationFields']) . "']);";
diff --git a/application/admin/controller/Addon.php b/application/admin/controller/Addon.php
index 89b8183..959d585 100644
--- a/application/admin/controller/Addon.php
+++ b/application/admin/controller/Addon.php
@@ -3,6 +3,7 @@
 namespace app\admin\controller;
 
 use app\common\controller\Backend;
+use fast\Http;
 use think\addons\AddonException;
 use think\addons\Service;
 use think\Cache;
@@ -31,8 +32,7 @@ class Addon extends Backend
     public function index()
     {
         $addons = get_addon_list();
-        foreach ($addons as $k => &$v)
-        {
+        foreach ($addons as $k => &$v) {
             $config = get_addon_config($v['name']);
             $v['config'] = $config ? 1 : 0;
         }
@@ -46,60 +46,31 @@ class Addon extends Backend
     public function config($ids = NULL)
     {
         $name = $this->request->get("name");
-        if (!$name)
-        {
+        if (!$name) {
             $this->error(__('Parameter %s can not be empty', $ids ? 'id' : 'name'));
         }
-        if (!is_dir(ADDON_PATH . $name))
-        {
+        if (!is_dir(ADDON_PATH . $name)) {
             $this->error(__('Directory not found'));
         }
         $info = get_addon_info($name);
         $config = get_addon_fullconfig($name);
         if (!$info)
             $this->error(__('No Results were found'));
-        if ($this->request->isPost())
-        {
+        if ($this->request->isPost()) {
             $params = $this->request->post("row/a");
-            if ($params)
-            {
-                foreach ($config as $k => &$v)
-                {
-                    if (isset($params[$v['name']]))
-                    {
-                        if ($v['type'] == 'array')
-                        {
-                            $fieldarr = $valuearr = [];
-                            $field = $params[$v['name']]['field'];
-                            $value = $params[$v['name']]['value'];
-
-                            foreach ($field as $m => $n)
-                            {
-                                if ($n != '')
-                                {
-                                    $fieldarr[] = $field[$m];
-                                    $valuearr[] = $value[$m];
-                                }
-                            }
-                            $params[$v['name']] = array_combine($fieldarr, $valuearr);
-                            $value = $params[$v['name']];
-                        }
-                        else
-                        {
-                            $value = is_array($params[$v['name']]) ? implode(',', $params[$v['name']]) : $params[$v['name']];
-                        }
-
+            if ($params) {
+                foreach ($config as $k => &$v) {
+                    if (isset($params[$v['name']])) {
+                        $value = is_array($params[$v['name']]) ? implode(',', $params[$v['name']]) : $params[$v['name']];
                         $v['value'] = $value;
                     }
                 }
-                try
-                {
+                try {
                     //更新配置文件
                     set_addon_fullconfig($name, $config);
+                    Service::refresh();
                     $this->success();
-                }
-                catch (Exception $e)
-                {
+                } catch (Exception $e) {
                     $this->error($e->getMessage());
                 }
             }
@@ -115,13 +86,11 @@ class Addon extends Backend
     public function install()
     {
         $name = $this->request->post("name");
-        $force = (int) $this->request->post("force");
-        if (!$name)
-        {
+        $force = (int)$this->request->post("force");
+        if (!$name) {
             $this->error(__('Parameter %s can not be empty', 'name'));
         }
-        try
-        {
+        try {
             $uid = $this->request->post("uid");
             $token = $this->request->post("token");
             $version = $this->request->post("version");
@@ -137,13 +106,9 @@ class Addon extends Backend
             $info['config'] = get_addon_config($name) ? 1 : 0;
             $info['state'] = 1;
             $this->success(__('Install successful'), null, ['addon' => $info]);
-        }
-        catch (AddonException $e)
-        {
+        } catch (AddonException $e) {
             $this->result($e->getData(), $e->getCode(), $e->getMessage());
-        }
-        catch (Exception $e)
-        {
+        } catch (Exception $e) {
             $this->error($e->getMessage(), $e->getCode());
         }
     }
@@ -154,22 +119,16 @@ class Addon extends Backend
     public function uninstall()
     {
         $name = $this->request->post("name");
-        $force = (int) $this->request->post("force");
-        if (!$name)
-        {
+        $force = (int)$this->request->post("force");
+        if (!$name) {
             $this->error(__('Parameter %s can not be empty', 'name'));
         }
-        try
-        {
+        try {
             Service::uninstall($name, $force);
             $this->success(__('Uninstall successful'));
-        }
-        catch (AddonException $e)
-        {
+        } catch (AddonException $e) {
             $this->result($e->getData(), $e->getCode(), $e->getMessage());
-        }
-        catch (Exception $e)
-        {
+        } catch (Exception $e) {
             $this->error($e->getMessage());
         }
     }
@@ -181,25 +140,19 @@ class Addon extends Backend
     {
         $name = $this->request->post("name");
         $action = $this->request->post("action");
-        $force = (int) $this->request->post("force");
-        if (!$name)
-        {
+        $force = (int)$this->request->post("force");
+        if (!$name) {
             $this->error(__('Parameter %s can not be empty', 'name'));
         }
-        try
-        {
+        try {
             $action = $action == 'enable' ? $action : 'disable';
             //调用启用、禁用的方法
             Service::$action($name, $force);
             Cache::rm('__menu__');
             $this->success(__('Operate successful'));
-        }
-        catch (AddonException $e)
-        {
+        } catch (AddonException $e) {
             $this->result($e->getData(), $e->getCode(), $e->getMessage());
-        }
-        catch (Exception $e)
-        {
+        } catch (Exception $e) {
             $this->error($e->getMessage());
         }
     }
@@ -213,55 +166,46 @@ class Addon extends Backend
 
         $file = $this->request->file('file');
         $addonTmpDir = RUNTIME_PATH . 'addons' . DS;
-        if (!is_dir($addonTmpDir))
-        {
+        if (!is_dir($addonTmpDir)) {
             @mkdir($addonTmpDir, 0755, true);
         }
         $info = $file->rule('uniqid')->validate(['size' => 10240000, 'ext' => 'zip'])->move($addonTmpDir);
-        if ($info)
-        {
+        if ($info) {
             $tmpName = substr($info->getFilename(), 0, stripos($info->getFilename(), '.'));
             $tmpAddonDir = ADDON_PATH . $tmpName . DS;
             $tmpFile = $addonTmpDir . $info->getSaveName();
-            try
-            {
+            try {
                 Service::unzip($tmpName);
                 @unlink($tmpFile);
                 $infoFile = $tmpAddonDir . 'info.ini';
-                if (!is_file($infoFile))
-                {
+                if (!is_file($infoFile)) {
                     throw new Exception(__('Addon info file was not found'));
                 }
 
                 $config = Config::parse($infoFile, '', $tmpName);
                 $name = isset($config['name']) ? $config['name'] : '';
-                if (!$name)
-                {
+                if (!$name) {
                     throw new Exception(__('Addon info file data incorrect'));
                 }
 
                 $newAddonDir = ADDON_PATH . $name . DS;
-                if (is_dir($newAddonDir))
-                {
+                if (is_dir($newAddonDir)) {
                     throw new Exception(__('Addon already exists'));
                 }
 
                 //重命名插件文件夹
                 rename($tmpAddonDir, $newAddonDir);
-                try
-                {
+                try {
                     //默认禁用该插件
                     $info = get_addon_info($name);
-                    if ($info['state'])
-                    {
+                    if ($info['state']) {
                         $info['state'] = 0;
                         set_addon_info($name, $info);
                     }
 
                     //执行插件的安装方法
                     $class = get_addon_class($name);
-                    if (class_exists($class))
-                    {
+                    if (class_exists($class)) {
                         $addon = new $class();
                         $addon->install();
                     }
@@ -271,22 +215,16 @@ class Addon extends Backend
 
                     $info['config'] = get_addon_config($name) ? 1 : 0;
                     $this->success(__('Offline installed tips'), null, ['addon' => $info]);
-                }
-                catch (Exception $e)
-                {
+                } catch (Exception $e) {
                     @rmdirs($newAddonDir);
                     throw new Exception($e->getMessage());
                 }
-            }
-            catch (Exception $e)
-            {
+            } catch (Exception $e) {
                 @unlink($tmpFile);
                 @rmdirs($tmpAddonDir);
                 $this->error($e->getMessage());
             }
-        }
-        else
-        {
+        } else {
             // 上传失败获取错误信息
             $this->error($file->getError());
         }
@@ -298,12 +236,10 @@ class Addon extends Backend
     public function upgrade()
     {
         $name = $this->request->post("name");
-        if (!$name)
-        {
+        if (!$name) {
             $this->error(__('Parameter %s can not be empty', 'name'));
         }
-        try
-        {
+        try {
             $uid = $this->request->post("uid");
             $token = $this->request->post("token");
             $version = $this->request->post("version");
@@ -318,29 +254,9 @@ class Addon extends Backend
             Service::upgrade($name, $extend);
             Cache::rm('__menu__');
             $this->success(__('Operate successful'));
-        }
-        catch (AddonException $e)
-        {
+        } catch (AddonException $e) {
             $this->result($e->getData(), $e->getCode(), $e->getMessage());
-        }
-        catch (Exception $e)
-        {
-            $this->error($e->getMessage());
-        }
-    }
-
-    /**
-     * 刷新缓存
-     */
-    public function refresh()
-    {
-        try
-        {
-            Service::refresh();
-            $this->success(__('Operate successful'));
-        }
-        catch (Exception $e)
-        {
+        } catch (Exception $e) {
             $this->error($e->getMessage());
         }
     }
@@ -350,31 +266,51 @@ class Addon extends Backend
      */
     public function downloaded()
     {
-        $offset = (int) $this->request->get("offset");
-        $limit = (int) $this->request->get("limit");
+        $offset = (int)$this->request->get("offset");
+        $limit = (int)$this->request->get("limit");
+        $filter = $this->request->get("filter");
         $search = $this->request->get("search");
         $search = htmlspecialchars(strip_tags($search));
-
+        $onlineaddons = Cache::get("onlineaddons");
+        if (!is_array($onlineaddons)) {
+            $onlineaddons = [];
+            $result = Http::sendRequest(config('fastadmin.api_url') . '/addon/index');
+            if ($result['ret']) {
+                $json = json_decode($result['msg'], TRUE);
+                $rows = isset($json['rows']) ? $json['rows'] : [];
+                foreach ($rows as $index => $row) {
+                    $onlineaddons[$row['name']] = $row;
+                }
+            }
+            Cache::set("onlineaddons", $onlineaddons, 600);
+        }
+        $filter = (array)json_decode($filter, true);
         $addons = get_addon_list();
         $list = [];
-        foreach ($addons as $k => $v)
-        {
+        foreach ($addons as $k => $v) {
             if ($search && stripos($v['name'], $search) === FALSE && stripos($v['intro'], $search) === FALSE)
                 continue;
 
-            $v['flag'] = '';
-            $v['banner'] = '';
-            $v['image'] = '';
-            $v['donateimage'] = '';
-            $v['demourl'] = '';
-            $v['price'] = '0.00';
+            if (isset($onlineaddons[$v['name']])) {
+                $v = array_merge($onlineaddons[$v['name']], $v);
+            } else {
+                $v['category_id'] = 0;
+                $v['flag'] = '';
+                $v['banner'] = '';
+                $v['image'] = '';
+                $v['donateimage'] = '';
+                $v['demourl'] = '';
+                $v['price'] = '0.00';
+            }
             $v['url'] = addon_url($v['name']);
             $v['createtime'] = filemtime(ADDON_PATH . $v['name']);
+            if ($filter && isset($filter['category_id']) && is_numeric($filter['category_id']) && $filter['category_id'] != $v['category_id']) {
+                continue;
+            }
             $list[] = $v;
         }
         $total = count($list);
-        if ($limit)
-        {
+        if ($limit) {
             $list = array_slice($list, $offset, $limit);
         }
         $result = array("total" => $total, "rows" => $list);
diff --git a/application/admin/controller/Ajax.php b/application/admin/controller/Ajax.php
index 5c40c06..ed8d80e 100644
--- a/application/admin/controller/Ajax.php
+++ b/application/admin/controller/Ajax.php
@@ -4,6 +4,7 @@ namespace app\admin\controller;
 
 use app\common\controller\Backend;
 use fast\Random;
+use think\addons\Service;
 use think\Cache;
 use think\Config;
 use think\Db;
@@ -47,8 +48,7 @@ class Ajax extends Backend
     {
         Config::set('default_return_type', 'json');
         $file = $this->request->file('file');
-        if (empty($file))
-        {
+        if (empty($file)) {
             $this->error(__('No file upload or server upload limit exceeded'));
         }
 
@@ -60,7 +60,7 @@ class Ajax extends Backend
         preg_match('/(\d+)(\w+)/', $upload['maxsize'], $matches);
         $type = strtolower($matches[2]);
         $typeDict = ['b' => 0, 'k' => 1, 'kb' => 1, 'm' => 2, 'mb' => 2, 'gb' => 3, 'g' => 3];
-        $size = (int) $upload['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0);
+        $size = (int)$upload['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0);
         $fileInfo = $file->getInfo();
         $suffix = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
         $suffix = $suffix ? $suffix : 'file';
@@ -68,8 +68,7 @@ class Ajax extends Backend
         $mimetypeArr = explode(',', $upload['mimetype']);
         $typeArr = explode('/', $fileInfo['type']);
         //验证文件后缀
-        if ($upload['mimetype'] !== '*' && !in_array($suffix, $mimetypeArr) && !in_array($fileInfo['type'], $mimetypeArr) && !in_array($typeArr[0] . '/*', $mimetypeArr))
-        {
+        if ($upload['mimetype'] !== '*' && !in_array($suffix, $mimetypeArr) && !in_array($fileInfo['type'], $mimetypeArr) && !in_array($typeArr[0] . '/*', $mimetypeArr)) {
             $this->error(__('Uploaded file format is limited'));
         }
         $replaceArr = [
@@ -93,11 +92,9 @@ class Ajax extends Backend
         $fileName = substr($savekey, strripos($savekey, '/') + 1);
         //
         $splInfo = $file->validate(['size' => $size])->move(ROOT_PATH . '/public' . $uploadDir, $fileName);
-        if ($splInfo)
-        {
+        if ($splInfo) {
             $imagewidth = $imageheight = 0;
-            if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf']))
-            {
+            if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'])) {
                 $imgInfo = getimagesize($splInfo->getPathname());
                 $imagewidth = isset($imgInfo[0]) ? $imgInfo[0] : $imagewidth;
                 $imageheight = isset($imgInfo[1]) ? $imgInfo[1] : $imageheight;
@@ -121,9 +118,7 @@ class Ajax extends Backend
             $this->success(__('Upload successful'), null, [
                 'url' => $uploadDir . $splInfo->getSaveName()
             ]);
-        }
-        else
-        {
+        } else {
             // 上传失败获取错误信息
             $this->error($file->getError());
         }
@@ -153,12 +148,10 @@ class Ajax extends Backend
         $field = in_array($field, ['weigh']) ? $field : 'weigh';
 
         // 如果设定了pid的值,此时只匹配满足条件的ID,其它忽略
-        if ($pid !== '')
-        {
+        if ($pid !== '') {
             $hasids = [];
             $list = Db::name($table)->where($prikey, 'in', $ids)->where('pid', 'in', $pid)->field('id,pid')->select();
-            foreach ($list as $k => $v)
-            {
+            foreach ($list as $k => $v) {
                 $hasids[] = $v['id'];
             }
             $ids = array_values(array_intersect($ids, $hasids));
@@ -166,20 +159,15 @@ class Ajax extends Backend
 
         //直接修复排序
         $one = Db::name($table)->field("{$field},COUNT(*) AS nums")->group($field)->having('nums > 1')->find();
-        if ($one)
-        {
+        if ($one) {
             $list = Db::name($table)->field("$prikey,$field")->order($field, $orderway)->select();
-            foreach ($list as $k => $v)
-            {
+            foreach ($list as $k => $v) {
                 Db::name($table)->where($prikey, $v[$prikey])->update([$field => $k + 1]);
             }
             $this->success();
-        }
-        else
-        {
+        } else {
             $list = Db::name($table)->field("$prikey,$field")->where($prikey, 'in', $ids)->order($field, $orderway)->select();
-            foreach ($list as $k => $v)
-            {
+            foreach ($list as $k => $v) {
                 $sour[] = $v[$prikey];
                 $weighdata[$v[$prikey]] = $v[$field];
             }
@@ -192,20 +180,13 @@ class Ajax extends Backend
             //echo "替换的ID:{$desc_id}\n";
             $weighids = array();
             $temp = array_values(array_diff_assoc($ids, $sour));
-            foreach ($temp as $m => $n)
-            {
-                if ($n == $sour_id)
-                {
+            foreach ($temp as $m => $n) {
+                if ($n == $sour_id) {
                     $offset = $desc_id;
-                }
-                else
-                {
-                    if ($sour_id == $temp[0])
-                    {
+                } else {
+                    if ($sour_id == $temp[0]) {
                         $offset = isset($temp[$m + 1]) ? $temp[$m + 1] : $sour_id;
-                    }
-                    else
-                    {
+                    } else {
                         $offset = isset($temp[$m - 1]) ? $temp[$m - 1] : $sour_id;
                     }
                 }
@@ -221,15 +202,23 @@ class Ajax extends Backend
      */
     public function wipecache()
     {
-        $wipe_cache_type = ['TEMP_PATH', 'LOG_PATH', 'CACHE_PATH'];
-        foreach ($wipe_cache_type as $item)
-        {
-            $dir = constant($item);
-            if (!is_dir($dir))
-                continue;
-            rmdirs($dir);
+        $type = $this->request->request("type");
+        switch ($type) {
+            case 'content' || 'all':
+                rmdirs(CACHE_PATH, false);
+                Cache::clear();
+                if ($type == 'content')
+                    break;
+            case 'template' || 'all':
+                rmdirs(TEMP_PATH, false);
+                if ($type == 'template')
+                    break;
+            case 'addons' || 'all':
+                Service::refresh();
+                if ($type == 'addons')
+                    break;
         }
-        Cache::clear();
+
         \think\Hook::listen("wipecache_after");
         $this->success();
     }
@@ -243,14 +232,11 @@ class Ajax extends Backend
         $pid = $this->request->get('pid');
         $where = ['status' => 'normal'];
         $categorylist = null;
-        if ($pid !== '')
-        {
-            if ($type)
-            {
+        if ($pid !== '') {
+            if ($type) {
                 $where['type'] = $type;
             }
-            if ($pid)
-            {
+            if ($pid) {
                 $where['pid'] = $pid;
             }
 
@@ -268,17 +254,13 @@ class Ajax extends Backend
         $city = $this->request->get('city');
         $where = ['pid' => 0, 'level' => 1];
         $provincelist = null;
-        if ($province !== '')
-        {
-            if ($province)
-            {
+        if ($province !== '') {
+            if ($province) {
                 $where['pid'] = $province;
                 $where['level'] = 2;
             }
-            if ($city !== '')
-            {
-                if ($city)
-                {
+            if ($city !== '') {
+                if ($city) {
                     $where['pid'] = $city;
                     $where['level'] = 3;
                 }
diff --git a/application/admin/lang/zh-cn/addon.php b/application/admin/lang/zh-cn/addon.php
index 9a8da32..d3bce24 100755
--- a/application/admin/lang/zh-cn/addon.php
+++ b/application/admin/lang/zh-cn/addon.php
@@ -30,6 +30,8 @@ return [
     'Please disable addon first'     => '请先禁用插件再进行升级',
     'Login now'                      => '立即登录',
     'Continue install'               => '不登录,继续安装',
+    'All'                            => '全部',
+    'Uncategoried'                   => '未归类',
     'Recommend'                      => '推荐',
     'Hot'                            => '热门',
     'New'                            => '新',
diff --git a/application/admin/lang/zh-cn/index.php b/application/admin/lang/zh-cn/index.php
index d5e4eeb..d96e47a 100644
--- a/application/admin/lang/zh-cn/index.php
+++ b/application/admin/lang/zh-cn/index.php
@@ -33,6 +33,10 @@ return [
     'Wipe cache completed'                                       => '清除缓存成功',
     'Wipe cache failed'                                          => '清除缓存失败',
     'Wipe cache'                                                 => '清空缓存',
+    'Wipe all cache'                                             => '一键清除缓存',
+    'Wipe content cache'                                         => '清空内容缓存',
+    'Wipe template cache'                                        => '清除模板缓存',
+    'Wipe addons cache'                                          => '清除插件缓存',
     'Check for updates'                                          => '检测更新',
     'Latest news'                                                => '最新消息',
     'View more'                                                  => '查看更多',
diff --git a/application/admin/library/Auth.php b/application/admin/library/Auth.php
index 1f59057..c0836ad 100644
--- a/application/admin/library/Auth.php
+++ b/application/admin/library/Auth.php
@@ -30,7 +30,7 @@ class Auth extends \fast\Auth
 
     /**
      * 管理员登录
-     * 
+     *
      * @param   string  $username   用户名
      * @param   string  $password   密码
      * @param   int     $keeptime   有效时长
@@ -44,7 +44,7 @@ class Auth extends \fast\Auth
             $this->setError('Username is incorrect');
             return false;
         }
-        if ($admin->loginfailure >= 3 && time() - $admin->updatetime < 86400)
+        if (Config::get('fastadmin.login_failure_retry') && $admin->loginfailure >= 10 && time() - $admin->updatetime < 86400)
         {
             $this->setError('Please try again after 1 day');
             return false;
@@ -119,7 +119,7 @@ class Auth extends \fast\Auth
 
     /**
      * 刷新保持登录的Cookie
-     * 
+     *
      * @param   int     $keeptime
      * @return  boolean
      */
@@ -155,6 +155,7 @@ class Auth extends \fast\Auth
             return FALSE;
         }
 
+        $arr = array_map('strtolower', $arr);
         // 是否存在
         if (in_array(strtolower($request->action()), $arr) || in_array('*', $arr))
         {
diff --git a/application/admin/view/addon/config.html b/application/admin/view/addon/config.html
index e780dc8..ef050c1 100644
--- a/application/admin/view/addon/config.html
+++ b/application/admin/view/addon/config.html
@@ -21,20 +21,13 @@
                             <textarea name="row[{$item.name}]" class="form-control" data-rule="{$item.rule}" rows="5" data-tip="{$item.tip}" {$item.extend}>{$item.value}</textarea>
                             {/case}
                             {case array}
-                            <dl class="fieldlist" rel="{$item.value|count}" data-name="row[{$item.name}]">
+                            <dl class="fieldlist" data-name="row[{$item.name}]">
                                 <dd>
                                     <ins>{:__('Array key')}</ins>
                                     <ins>{:__('Array value')}</ins>
                                 </dd>
-                                {foreach $item.value as $key => $vo}
-                                <dd class="form-inline">
-                                    <input type="text" name="row[{$item.name}][field][{$key}]" class="form-control" value="{$key}" size="10" />
-                                    <input type="text" name="row[{$item.name}][value][{$key}]" class="form-control" value="{$vo}" size="30" />
-                                    <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span>
-                                    <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
-                                </dd>
-                                {/foreach}
-                                <dd><a href="javascript:;" class="append btn btn-sm btn-success"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
+                                <dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
+                                <textarea name="row[{$item.name}]" cols="30" rows="5" class="hide">{$item.value|json_encode}</textarea>
                             </dl>
                             {/case}
                             {case datetime}
diff --git a/application/admin/view/addon/index.html b/application/admin/view/addon/index.html
index c7e6db5..639481b 100644
--- a/application/admin/view/addon/index.html
+++ b/application/admin/view/addon/index.html
@@ -1,7 +1,7 @@
 <style type="text/css">
     .noimage {width:100%;text-align: center;background:#18bc9c;color:#fff;padding-bottom:66.66%;position:relative;}
     .noimage > div {position: absolute;top:48%;width:100%;text-align:center;}
-    .addon {position: relative;}
+    .addon {position: relative;border-color:#e4e4e4;}
     .addon > span {position:absolute;left:15px;top:15px;z-index:9;}
     .addon > span a{opacity: 0.5;border:none;color:#fff;}
     .layui-layer-pay .layui-layer-content {padding:0;height:600px!important;}
@@ -16,9 +16,34 @@
     .status-disabled .noimage {
         background:#d2d6de;
     }
+    @media (min-width: 992px) {
+        .addon {
+            -webkit-transition:all 0.3s ease;
+            -moz-transition: all 0.3s ease;
+            -o-transition: all 0.3s ease;
+            transition: all 0.3s ease;
+        }
+        .addon:hover {
+            border-color: #dddddd;
+            -webkit-box-shadow: 0 26px 40px -24px rgba(0,36,100,0.3);
+            -moz-box-shadow: 0 26px 40px -24px rgba(0,36,100,0.3);
+            box-shadow: 0 26px 40px -24px rgba(0,36,100,0.3);
+            -webkit-transition: all 0.3s ease;
+            -moz-transition: all 0.3s ease;
+            -o-transition: all 0.3s ease;
+            transition: all 0.3s ease;
+        }
+    }
 </style>
 <div class="panel panel-default panel-intro">
-    {:build_heading()}
+    <div class="panel-heading">
+        {:build_heading(null,FALSE)}
+        <ul class="nav nav-tabs nav-category">
+            <li class="active"><a href="javascript:;" data-id="">{:__('All')}</a></li>
+            <li><a href="javascript:;" data-id="0">{:__('Uncategoried')}</a></li>
+        </ul>
+
+    </div>
 
     <div class="panel-body">
         <div id="myTabContent" class="tab-content">
@@ -27,10 +52,11 @@
                     <div id="toolbar" class="toolbar">
                         {:build_toolbar('refresh')}
                         <button type="button" id="plupload-addon" class="btn btn-danger plupload" data-url="addon/local" data-mimetype="application/zip" data-multiple="false"><i class="fa fa-upload"></i> {:__('Offline install')}</button>
-                        <a class="btn btn-success btn-ajax" href="addon/refresh"><i class="fa fa-refresh"></i> {:__('Refresh addon cache')}</a>
                         <div class="btn-group">
-                            <a href="#" class="btn btn-info btn-switch active" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-cloud"></i> {:__('Online store')}</a>
-                            <a href="#" class="btn btn-info btn-switch" data-url="addon/downloaded"><i class="fa fa-laptop"></i> {:__('Local addon')}</a>
+                            <a href="#" class="btn btn-info btn-switch active" data-type="all" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-list"></i> {:__('全部')}</a>
+                            <a href="#" class="btn btn-info btn-switch" data-type="free" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-gift"></i> {:__('免费')}</a>
+                            <a href="#" class="btn btn-info btn-switch" data-type="price" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-rmb"></i> {:__('付费')}</a>
+                            <a href="#" class="btn btn-info btn-switch" data-type="local" data-url="addon/downloaded"><i class="fa fa-laptop"></i> {:__('Local addon')}</a>
                         </div>
                         <a class="btn btn-primary btn-userinfo" href="javascript:;"><i class="fa fa-user"></i> {:__('Userinfo')}</a>
                     </div>
@@ -44,6 +70,55 @@
         </div>
     </div>
 </div>
+<script id="searchformtpl" type="text/html">
+    <form action="" class="form-commonsearch hide">
+        <div class="well" style="box-shadow:none;border-radius:2px;margin-bottom:10px;">
+            <div class="row">
+                <div class="col-xs-12 col-sm-6 col-md-3">
+                    <div class="form-group">
+                        <label class="control-label">标题</label>
+                        <input class="operate" type="hidden" data-name="title" value="like"/>
+                        <input class="form-control" type="text" name="title" placeholder="请输入查找的标题" value=""/>
+                    </div>
+                </div>
+                <div class="col-xs-12 col-sm-6 col-md-3">
+                    <div class="form-group">
+                        <label class="control-label">类型</label>
+                        <input class="operate" type="hidden" data-name="type" value="="/>
+                        <input class="form-control" type="text" name="type" placeholder="all" value=""/>
+                    </div>
+                </div>
+                <div class="col-xs-12 col-sm-6 col-md-3">
+                    <div class="form-group">
+                        <label class="control-label">分类</label>
+                        <input type="hidden" class="operate" data-name="category_id" value="="/>
+                        <input class="form-control" name="category_id" type="text" value="">
+                    </div>
+                </div>
+                <div class="col-xs-12 col-sm-6 col-md-3">
+                    <div class="form-group">
+                        <label class="control-label">版本号</label>
+                        <input type="hidden" class="operate" data-name="faversion" value="="/>
+                        <input class="form-control" name="faversion" type="text" value="{$config.fastadmin.version}">
+                    </div>
+                </div>
+                <div class="col-xs-12 col-sm-6 col-md-3">
+                    <div class="form-group">
+                        <label class="control-label"></label>
+                        <div class="row">
+                            <div class="col-xs-6">
+                                <input type="submit" class="btn btn-success btn-block" value="提交"/>
+                            </div>
+                            <div class="col-xs-6">
+                                <input type="reset" class="btn btn-primary btn-block" value="重置"/>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</script>
 <script id="logintpl" type="text/html">
     <div>
         <form class="form-horizontal">
@@ -180,7 +255,7 @@
                 <%}%>
             </a>
             <div class="caption">
-                <h4><%=item.title?item.title:'{:__('None')}'%> 
+                <h4><%=item.title?item.title:'{:__('None')}'%>
                     <% if(item.flag.indexOf("recommend")>-1){%>
                     <span class="label label-success">{:__('Recommend')}</span>
                     <% } %>
@@ -203,7 +278,7 @@
                     <% if(!addon){ %>
                     <% if(typeof item.releaselist !="undefined" && item.releaselist.length>1){%>
                     <span class="btn-group">
-                        <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a> 
+                        <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a>
                         <a class="btn btn-success dropdown-toggle" data-toggle="dropdown" href="javascript:;">
                             <span class="fa fa-caret-down"></span>
                         </a>
@@ -214,10 +289,10 @@
                         </ul>
                     </span>
                     <% }else{%>
-                    <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a> 
+                    <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a>
                     <% } %>
                     <% if(item.demourl){ %>
-                    <a href="<%=item.demourl%>" class="btn btn-primary btn-info btn-demo" target="_blank"><i class="fa fa-flash"></i> {:__('Demo')}</a> 
+                    <a href="<%=item.demourl%>" class="btn btn-primary btn-info btn-demo" target="_blank"><i class="fa fa-flash"></i> {:__('Demo')}</a>
                     <% } %>
                     <% } %>
 
@@ -235,7 +310,7 @@
                     <% if(addon && item && addon.version!=item.version){%>
                     <% if(typeof item.releaselist !="undefined" && item.releaselist.length>1){%>
                     <span class="btn-group">
-                        <a href="javascript:;" class="btn btn-info btn-success btn-upgrade" data-version="<%=item.version%>"><i class="fa fa-cloud"></i> {:__('Upgrade')}</a> 
+                        <a href="javascript:;" class="btn btn-info btn-success btn-upgrade" data-version="<%=item.version%>"><i class="fa fa-cloud"></i> {:__('Upgrade')}</a>
                         <a class="btn btn-info dropdown-toggle" data-toggle="dropdown" href="javascript:;">
                             <span class="fa fa-caret-down"></span>
                         </a>
diff --git a/application/admin/view/common/header.html b/application/admin/view/common/header.html
index 29ffba2..406bee7 100755
--- a/application/admin/view/common/header.html
+++ b/application/admin/view/common/header.html
@@ -25,7 +25,7 @@
                 <a href="__PUBLIC__" target="_blank"><i class="fa fa-home" style="font-size:14px;"></i></a>
             </li>
 
-            <li class="dropdown notifications-menu">
+            <li class="dropdown notifications-menu hidden-xs">
                 <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                     <i class="fa fa-bell-o"></i>
                     <span class="label label-warning"></span>
@@ -41,19 +41,26 @@
                     <li class="footer"><a href="#" target="_blank">{:__('View more')}</a></li>
                 </ul>
             </li>
-            
-            <li>
+
+            <li class="hidden-xs">
                 <a href="javascript:;" data-toggle="checkupdate" title="{:__('Check for updates')}">
                     <i class="fa fa-refresh"></i>
                 </a>
             </li>
-            
+
             <li>
-                <a href="javascript:;" data-toggle="wipecache" title="{:__('Wipe cache')}">
+                <a href="javascript:;" data-toggle="dropdown" title="{:__('Wipe cache')}">
                     <i class="fa fa-trash"></i>
                 </a>
+                <ul class="dropdown-menu wipecache">
+                    <li><a href="javascript:;" data-type="all"><i class="fa fa-trash"></i> {:__('Wipe all cache')}</a></li>
+                    <li><a href="javascript:;" data-type="content"><i class="fa fa-file-text"></i> {:__('Wipe content cache')}</a></li>
+                    <li><a href="javascript:;" data-type="template"><i class="fa fa-file-image-o"></i> {:__('Wipe template cache')}</a></li>
+                    <li><a href="javascript:;" data-type="addons"><i class="fa fa-rocket"></i> {:__('Wipe addons cache')}</a></li>
+                </ul>
             </li>
 
+            {if $Think.config.lang_switch_on}
             <li class="hidden-xs">
                 <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-language"></i></a>
                 <ul class="dropdown-menu">
@@ -65,6 +72,7 @@
                     </li>
                 </ul>
             </li>
+            {/if}
 
             <li class="hidden-xs">
                 <a href="#" data-toggle="fullscreen"><i class="fa fa-arrows-alt"></i></a>
@@ -103,16 +111,18 @@
                     <!-- Menu Footer-->
                     <li class="user-footer">
                         <div class="pull-left">
-                            <a href="general/profile" class="btn btn-primary addtabsit"><i class="fa fa-user"></i> {:__('Profile')}</a>
+                            <a href="general/profile" class="btn btn-primary addtabsit"><i class="fa fa-user"></i>
+                                {:__('Profile')}</a>
                         </div>
                         <div class="pull-right">
-                            <a href="{:url('index/logout')}" class="btn btn-danger"><i class="fa fa-sign-out"></i> {:__('Logout')}</a>
+                            <a href="{:url('index/logout')}" class="btn btn-danger"><i class="fa fa-sign-out"></i>
+                                {:__('Logout')}</a>
                         </div>
                     </li>
                 </ul>
             </li>
             <!-- 控制栏切换按钮 -->
-            <li>
+            <li class="hidden-xs">
                 <a href="javascript:;" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
             </li>
         </ul>
diff --git a/application/admin/view/index/login.html b/application/admin/view/index/login.html
index 9746acd..57f3992 100644
--- a/application/admin/view/index/login.html
+++ b/application/admin/view/index/login.html
@@ -80,7 +80,7 @@
                                 <div class="input-group">
                                     <div class="input-group-addon"><span class="glyphicon glyphicon-option-horizontal" aria-hidden="true"></span></div>
                                     <input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="{:__('Captcha')}:required;length(4)" />
-                                    <span class="input-group-addon" style="padding:0;border:none;">
+                                    <span class="input-group-addon" style="padding:0;border:none;cursor:pointer;">
                                         <img src="{:captcha_src()}" width="100" height="30" onclick="this.src = '{:captcha_src()}?r=' + Math.random();"/>
                                     </span>
                                 </div>
@@ -97,7 +97,7 @@
                             </form>
                         </div>
                     </div>
-                    <p class="copyright"><a href="https://www.fastadmin.net?ref=demo">Powered By FastAdmin</a></p>
+                    <p class="copyright"><a href="https://www.fastadmin.net">Powered By FastAdmin</a></p>
                 </div>
             </div>
         </div>
diff --git a/application/common/controller/Backend.php b/application/common/controller/Backend.php
index 5ef3105..77a5f81 100644
--- a/application/common/controller/Backend.php
+++ b/application/common/controller/Backend.php
@@ -279,6 +279,7 @@ class Backend extends Controller
             {
                 $k = $tableName . $k;
             }
+            $v = !is_array($v) ? trim($v) : $v;
             $sym = strtoupper(isset($op[$k]) ? $op[$k] : $sym);
             switch ($sym)
             {
@@ -306,7 +307,7 @@ class Backend extends Controller
                 case 'IN(...)':
                 case 'NOT IN':
                 case 'NOT IN(...)':
-                    $where[] = [$k, str_replace('(...)', '', $sym), explode(',', $v)];
+                    $where[] = [$k, str_replace('(...)', '', $sym), is_array($v) ? $v : explode(',', $v)];
                     break;
                 case 'BETWEEN':
                 case 'NOT BETWEEN':
diff --git a/application/common/library/Auth.php b/application/common/library/Auth.php
index 8ab8199..b2b8487 100644
--- a/application/common/library/Auth.php
+++ b/application/common/library/Auth.php
@@ -382,6 +382,7 @@ class Auth
             $rules[] = $v['name'];
         }
         $url = ($module ? $module : request()->module()) . '/' . (is_null($path) ? $this->getRequestUri() : $path);
+        $url = strtolower(str_replace('.', '/', $url));
         return in_array($url, $rules) ? TRUE : FALSE;
     }
 
@@ -539,6 +540,7 @@ class Auth
         {
             return FALSE;
         }
+        $arr = array_map('strtolower', $arr);
         // 是否存在
         if (in_array(strtolower($request->action()), $arr) || in_array('*', $arr))
         {
diff --git a/application/common/model/Category.php b/application/common/model/Category.php
index fa1c9f4..40e5701 100644
--- a/application/common/model/Category.php
+++ b/application/common/model/Category.php
@@ -21,6 +21,13 @@ class Category Extends Model
         'flag_text',
     ];
 
+    protected static function init()
+    {
+        self::afterInsert(function ($row) {
+            $row->save(['weigh' => $row['id']]);
+        });
+    }
+
     public function setFlagAttr($value, $data)
     {
         return is_array($value) ? implode(',', $value) : $value;
diff --git a/application/config.php b/application/config.php
index b747246..375c9e2 100755
--- a/application/config.php
+++ b/application/config.php
@@ -258,18 +258,20 @@ return [
     //FastAdmin配置
     'fastadmin'              => [
         //是否开启前台会员中心
-        'usercenter'       => true,
+        'usercenter'          => true,
         //登录验证码
-        'login_captcha'    => false,
+        'login_captcha'       => true,
+        //登录失败超过10则1天后重试
+        'login_failure_retry' => true,
         //是否同一账号同一时间只能在一个地方登录
-        'login_unique'     => false,
+        'login_unique'        => false,
         //登录页默认背景图
-        'login_background' => "/assets/img/loginbg.jpg",
+        'login_background'    => "/assets/img/loginbg.jpg",
         //自动检测更新
-        'checkupdate'      => false,
+        'checkupdate'         => false,
         //版本号
-        'version'          => '1.0.0.20180401_beta',
+        'version'             => '1.0.0.20180406_beta',
         //API接口地址
-        'api_url'          => 'https://api.fastadmin.net',
+        'api_url'             => 'https://api.fastadmin.net',
     ],
 ];
diff --git a/public/api.html b/public/api.html
index d45f6f8..e2c09e6 100755
--- a/public/api.html
+++ b/public/api.html
@@ -9,7 +9,15 @@
         <title>FastAdmin</title>
         <link href="https://cdn.bootcss.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
         <style type="text/css">
-            body      { padding-top: 70px; margin-bottom: 15px; }
+            body {
+                padding-top: 70px; margin-bottom: 15px;
+                -webkit-font-smoothing: antialiased;
+                -moz-osx-font-smoothing: grayscale;
+                font-family: "Roboto", "SF Pro SC", "SF Pro Display", "SF Pro Icons", "PingFang SC", BlinkMacSystemFont, -apple-system, "Segoe UI", "Microsoft Yahei", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+                font-weight: 400;
+            }
+            h2        { font-size: 1.6em; }
+            hr        { margin-top: 10px; }
             .tab-pane { padding-top: 10px; }
             .mt0      { margin-top: 0px; }
             .footer   { font-size: 12px; color: #666; }
@@ -3351,7 +3359,7 @@
 
             <div class="row mt0 footer">
                 <div class="col-md-6" align="left">
-                    Generated on 2018-04-01 15:11:14                </div>
+                    Generated on 2018-04-06 19:15:01                </div>
                 <div class="col-md-6" align="right">
                     <a href="https://www.fastadmin.net" target="_blank">FastAdmin</a>
                 </div>
diff --git a/public/assets/css/backend.css b/public/assets/css/backend.css
index f3bc297..77cef5e 100644
--- a/public/assets/css/backend.css
+++ b/public/assets/css/backend.css
@@ -807,4 +807,6 @@ form.form-horizontal .control-label {
 .checkbox > label > input {
   margin: 2px 0 0;
 }
-/*# sourceMappingURL=backend.css.map */
\ No newline at end of file
+.wipecache li a {
+  color: #444444!important;
+}
diff --git a/public/assets/css/backend.min.css b/public/assets/css/backend.min.css
index bb65dc7..9c1a855 100644
--- a/public/assets/css/backend.min.css
+++ b/public/assets/css/backend.min.css
@@ -1 +1 @@
-/*! * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter,Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block;}audio,canvas,progress,video{display:inline-block;vertical-align:baseline;}audio:not([controls]){display:none;height:0;}[hidden],template{display:none;}a{background-color:transparent;}a:active,a:hover{outline:0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}h1{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{overflow:visible;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}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;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important;}a,a:visited{text-decoration:underline;}a[href]:after{content:" (" attr(href) ")";}abbr[title]:after{content:" (" attr(title) ")";}a[href^="#"]:after,a[href^="javascript:"]:after{content:"";}pre,blockquote{border:1px solid #999;page-break-inside:avoid;}thead{display:table-header-group;}tr,img{page-break-inside:avoid;}img{max-width:100% !important;}p,h2,h3{orphans:3;widows:3;}h2,h3{page-break-after:avoid;}.navbar{display:none;}.btn > .caret,.dropup > .btn > .caret{border-top-color:#000 !important;}.label{border:1px solid #000;}.table{border-collapse:collapse !important;}.table td,.table th{background-color:#fff !important;}.table-bordered th,.table-bordered td{border:1px solid #ddd !important;}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg');}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.glyphicon-asterisk:before{content:"\002a";}.glyphicon-plus:before{content:"\002b";}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac";}.glyphicon-minus:before{content:"\2212";}.glyphicon-cloud:before{content:"\2601";}.glyphicon-envelope:before{content:"\2709";}.glyphicon-pencil:before{content:"\270f";}.glyphicon-glass:before{content:"\e001";}.glyphicon-music:before{content:"\e002";}.glyphicon-search:before{content:"\e003";}.glyphicon-heart:before{content:"\e005";}.glyphicon-star:before{content:"\e006";}.glyphicon-star-empty:before{content:"\e007";}.glyphicon-user:before{content:"\e008";}.glyphicon-film:before{content:"\e009";}.glyphicon-th-large:before{content:"\e010";}.glyphicon-th:before{content:"\e011";}.glyphicon-th-list:before{content:"\e012";}.glyphicon-ok:before{content:"\e013";}.glyphicon-remove:before{content:"\e014";}.glyphicon-zoom-in:before{content:"\e015";}.glyphicon-zoom-out:before{content:"\e016";}.glyphicon-off:before{content:"\e017";}.glyphicon-signal:before{content:"\e018";}.glyphicon-cog:before{content:"\e019";}.glyphicon-trash:before{content:"\e020";}.glyphicon-home:before{content:"\e021";}.glyphicon-file:before{content:"\e022";}.glyphicon-time:before{content:"\e023";}.glyphicon-road:before{content:"\e024";}.glyphicon-download-alt:before{content:"\e025";}.glyphicon-download:before{content:"\e026";}.glyphicon-upload:before{content:"\e027";}.glyphicon-inbox:before{content:"\e028";}.glyphicon-play-circle:before{content:"\e029";}.glyphicon-repeat:before{content:"\e030";}.glyphicon-refresh:before{content:"\e031";}.glyphicon-list-alt:before{content:"\e032";}.glyphicon-lock:before{content:"\e033";}.glyphicon-flag:before{content:"\e034";}.glyphicon-headphones:before{content:"\e035";}.glyphicon-volume-off:before{content:"\e036";}.glyphicon-volume-down:before{content:"\e037";}.glyphicon-volume-up:before{content:"\e038";}.glyphicon-qrcode:before{content:"\e039";}.glyphicon-barcode:before{content:"\e040";}.glyphicon-tag:before{content:"\e041";}.glyphicon-tags:before{content:"\e042";}.glyphicon-book:before{content:"\e043";}.glyphicon-bookmark:before{content:"\e044";}.glyphicon-print:before{content:"\e045";}.glyphicon-camera:before{content:"\e046";}.glyphicon-font:before{content:"\e047";}.glyphicon-bold:before{content:"\e048";}.glyphicon-italic:before{content:"\e049";}.glyphicon-text-height:before{content:"\e050";}.glyphicon-text-width:before{content:"\e051";}.glyphicon-align-left:before{content:"\e052";}.glyphicon-align-center:before{content:"\e053";}.glyphicon-align-right:before{content:"\e054";}.glyphicon-align-justify:before{content:"\e055";}.glyphicon-list:before{content:"\e056";}.glyphicon-indent-left:before{content:"\e057";}.glyphicon-indent-right:before{content:"\e058";}.glyphicon-facetime-video:before{content:"\e059";}.glyphicon-picture:before{content:"\e060";}.glyphicon-map-marker:before{content:"\e062";}.glyphicon-adjust:before{content:"\e063";}.glyphicon-tint:before{content:"\e064";}.glyphicon-edit:before{content:"\e065";}.glyphicon-share:before{content:"\e066";}.glyphicon-check:before{content:"\e067";}.glyphicon-move:before{content:"\e068";}.glyphicon-step-backward:before{content:"\e069";}.glyphicon-fast-backward:before{content:"\e070";}.glyphicon-backward:before{content:"\e071";}.glyphicon-play:before{content:"\e072";}.glyphicon-pause:before{content:"\e073";}.glyphicon-stop:before{content:"\e074";}.glyphicon-forward:before{content:"\e075";}.glyphicon-fast-forward:before{content:"\e076";}.glyphicon-step-forward:before{content:"\e077";}.glyphicon-eject:before{content:"\e078";}.glyphicon-chevron-left:before{content:"\e079";}.glyphicon-chevron-right:before{content:"\e080";}.glyphicon-plus-sign:before{content:"\e081";}.glyphicon-minus-sign:before{content:"\e082";}.glyphicon-remove-sign:before{content:"\e083";}.glyphicon-ok-sign:before{content:"\e084";}.glyphicon-question-sign:before{content:"\e085";}.glyphicon-info-sign:before{content:"\e086";}.glyphicon-screenshot:before{content:"\e087";}.glyphicon-remove-circle:before{content:"\e088";}.glyphicon-ok-circle:before{content:"\e089";}.glyphicon-ban-circle:before{content:"\e090";}.glyphicon-arrow-left:before{content:"\e091";}.glyphicon-arrow-right:before{content:"\e092";}.glyphicon-arrow-up:before{content:"\e093";}.glyphicon-arrow-down:before{content:"\e094";}.glyphicon-share-alt:before{content:"\e095";}.glyphicon-resize-full:before{content:"\e096";}.glyphicon-resize-small:before{content:"\e097";}.glyphicon-exclamation-sign:before{content:"\e101";}.glyphicon-gift:before{content:"\e102";}.glyphicon-leaf:before{content:"\e103";}.glyphicon-fire:before{content:"\e104";}.glyphicon-eye-open:before{content:"\e105";}.glyphicon-eye-close:before{content:"\e106";}.glyphicon-warning-sign:before{content:"\e107";}.glyphicon-plane:before{content:"\e108";}.glyphicon-calendar:before{content:"\e109";}.glyphicon-random:before{content:"\e110";}.glyphicon-comment:before{content:"\e111";}.glyphicon-magnet:before{content:"\e112";}.glyphicon-chevron-up:before{content:"\e113";}.glyphicon-chevron-down:before{content:"\e114";}.glyphicon-retweet:before{content:"\e115";}.glyphicon-shopping-cart:before{content:"\e116";}.glyphicon-folder-close:before{content:"\e117";}.glyphicon-folder-open:before{content:"\e118";}.glyphicon-resize-vertical:before{content:"\e119";}.glyphicon-resize-horizontal:before{content:"\e120";}.glyphicon-hdd:before{content:"\e121";}.glyphicon-bullhorn:before{content:"\e122";}.glyphicon-bell:before{content:"\e123";}.glyphicon-certificate:before{content:"\e124";}.glyphicon-thumbs-up:before{content:"\e125";}.glyphicon-thumbs-down:before{content:"\e126";}.glyphicon-hand-right:before{content:"\e127";}.glyphicon-hand-left:before{content:"\e128";}.glyphicon-hand-up:before{content:"\e129";}.glyphicon-hand-down:before{content:"\e130";}.glyphicon-circle-arrow-right:before{content:"\e131";}.glyphicon-circle-arrow-left:before{content:"\e132";}.glyphicon-circle-arrow-up:before{content:"\e133";}.glyphicon-circle-arrow-down:before{content:"\e134";}.glyphicon-globe:before{content:"\e135";}.glyphicon-wrench:before{content:"\e136";}.glyphicon-tasks:before{content:"\e137";}.glyphicon-filter:before{content:"\e138";}.glyphicon-briefcase:before{content:"\e139";}.glyphicon-fullscreen:before{content:"\e140";}.glyphicon-dashboard:before{content:"\e141";}.glyphicon-paperclip:before{content:"\e142";}.glyphicon-heart-empty:before{content:"\e143";}.glyphicon-link:before{content:"\e144";}.glyphicon-phone:before{content:"\e145";}.glyphicon-pushpin:before{content:"\e146";}.glyphicon-usd:before{content:"\e148";}.glyphicon-gbp:before{content:"\e149";}.glyphicon-sort:before{content:"\e150";}.glyphicon-sort-by-alphabet:before{content:"\e151";}.glyphicon-sort-by-alphabet-alt:before{content:"\e152";}.glyphicon-sort-by-order:before{content:"\e153";}.glyphicon-sort-by-order-alt:before{content:"\e154";}.glyphicon-sort-by-attributes:before{content:"\e155";}.glyphicon-sort-by-attributes-alt:before{content:"\e156";}.glyphicon-unchecked:before{content:"\e157";}.glyphicon-expand:before{content:"\e158";}.glyphicon-collapse-down:before{content:"\e159";}.glyphicon-collapse-up:before{content:"\e160";}.glyphicon-log-in:before{content:"\e161";}.glyphicon-flash:before{content:"\e162";}.glyphicon-log-out:before{content:"\e163";}.glyphicon-new-window:before{content:"\e164";}.glyphicon-record:before{content:"\e165";}.glyphicon-save:before{content:"\e166";}.glyphicon-open:before{content:"\e167";}.glyphicon-saved:before{content:"\e168";}.glyphicon-import:before{content:"\e169";}.glyphicon-export:before{content:"\e170";}.glyphicon-send:before{content:"\e171";}.glyphicon-floppy-disk:before{content:"\e172";}.glyphicon-floppy-saved:before{content:"\e173";}.glyphicon-floppy-remove:before{content:"\e174";}.glyphicon-floppy-save:before{content:"\e175";}.glyphicon-floppy-open:before{content:"\e176";}.glyphicon-credit-card:before{content:"\e177";}.glyphicon-transfer:before{content:"\e178";}.glyphicon-cutlery:before{content:"\e179";}.glyphicon-header:before{content:"\e180";}.glyphicon-compressed:before{content:"\e181";}.glyphicon-earphone:before{content:"\e182";}.glyphicon-phone-alt:before{content:"\e183";}.glyphicon-tower:before{content:"\e184";}.glyphicon-stats:before{content:"\e185";}.glyphicon-sd-video:before{content:"\e186";}.glyphicon-hd-video:before{content:"\e187";}.glyphicon-subtitles:before{content:"\e188";}.glyphicon-sound-stereo:before{content:"\e189";}.glyphicon-sound-dolby:before{content:"\e190";}.glyphicon-sound-5-1:before{content:"\e191";}.glyphicon-sound-6-1:before{content:"\e192";}.glyphicon-sound-7-1:before{content:"\e193";}.glyphicon-copyright-mark:before{content:"\e194";}.glyphicon-registration-mark:before{content:"\e195";}.glyphicon-cloud-download:before{content:"\e197";}.glyphicon-cloud-upload:before{content:"\e198";}.glyphicon-tree-conifer:before{content:"\e199";}.glyphicon-tree-deciduous:before{content:"\e200";}.glyphicon-cd:before{content:"\e201";}.glyphicon-save-file:before{content:"\e202";}.glyphicon-open-file:before{content:"\e203";}.glyphicon-level-up:before{content:"\e204";}.glyphicon-copy:before{content:"\e205";}.glyphicon-paste:before{content:"\e206";}.glyphicon-alert:before{content:"\e209";}.glyphicon-equalizer:before{content:"\e210";}.glyphicon-king:before{content:"\e211";}.glyphicon-queen:before{content:"\e212";}.glyphicon-pawn:before{content:"\e213";}.glyphicon-bishop:before{content:"\e214";}.glyphicon-knight:before{content:"\e215";}.glyphicon-baby-formula:before{content:"\e216";}.glyphicon-tent:before{content:"\26fa";}.glyphicon-blackboard:before{content:"\e218";}.glyphicon-bed:before{content:"\e219";}.glyphicon-apple:before{content:"\f8ff";}.glyphicon-erase:before{content:"\e221";}.glyphicon-hourglass:before{content:"\231b";}.glyphicon-lamp:before{content:"\e223";}.glyphicon-duplicate:before{content:"\e224";}.glyphicon-piggy-bank:before{content:"\e225";}.glyphicon-scissors:before{content:"\e226";}.glyphicon-bitcoin:before{content:"\e227";}.glyphicon-btc:before{content:"\e227";}.glyphicon-xbt:before{content:"\e227";}.glyphicon-yen:before{content:"\00a5";}.glyphicon-jpy:before{content:"\00a5";}.glyphicon-ruble:before{content:"\20bd";}.glyphicon-rub:before{content:"\20bd";}.glyphicon-scale:before{content:"\e230";}.glyphicon-ice-lolly:before{content:"\e231";}.glyphicon-ice-lolly-tasted:before{content:"\e232";}.glyphicon-education:before{content:"\e233";}.glyphicon-option-horizontal:before{content:"\e234";}.glyphicon-option-vertical:before{content:"\e235";}.glyphicon-menu-hamburger:before{content:"\e236";}.glyphicon-modal-window:before{content:"\e237";}.glyphicon-oil:before{content:"\e238";}.glyphicon-grain:before{content:"\e239";}.glyphicon-sunglasses:before{content:"\e240";}.glyphicon-text-size:before{content:"\e241";}.glyphicon-text-color:before{content:"\e242";}.glyphicon-text-background:before{content:"\e243";}.glyphicon-object-align-top:before{content:"\e244";}.glyphicon-object-align-bottom:before{content:"\e245";}.glyphicon-object-align-horizontal:before{content:"\e246";}.glyphicon-object-align-left:before{content:"\e247";}.glyphicon-object-align-vertical:before{content:"\e248";}.glyphicon-object-align-right:before{content:"\e249";}.glyphicon-triangle-right:before{content:"\e250";}.glyphicon-triangle-left:before{content:"\e251";}.glyphicon-triangle-bottom:before{content:"\e252";}.glyphicon-triangle-top:before{content:"\e253";}.glyphicon-console:before{content:"\e254";}.glyphicon-superscript:before{content:"\e255";}.glyphicon-subscript:before{content:"\e256";}.glyphicon-menu-left:before{content:"\e257";}.glyphicon-menu-right:before{content:"\e258";}.glyphicon-menu-down:before{content:"\e259";}.glyphicon-menu-up:before{content:"\e260";}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0);}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.42857143;color:#333333;background-color:#fff;}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;}a{color:#2c3e50;text-decoration:none;}a:hover,a:focus{color:#11181f;text-decoration:underline;}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}figure{margin:0;}img{vertical-align:middle;}.img-responsive,.thumbnail > img,.thumbnail a > img,.carousel-inner > .item > img,.carousel-inner > .item > a > img{display:block;max-width:100%;height:auto;}.img-rounded{border-radius:5px;}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto;}.img-circle{border-radius:50%;}hr{margin-top:17px;margin-bottom:17px;border:0;border-top:1px solid #eeeeee;}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;}[role="button"]{cursor:pointer;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777777;}h1,.h1,h2,.h2,h3,.h3{margin-top:17px;margin-bottom:8.5px;}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%;}h4,.h4,h5,.h5,h6,.h6{margin-top:8.5px;margin-bottom:8.5px;}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%;}h1,.h1{font-size:31px;}h2,.h2{font-size:25px;}h3,.h3{font-size:21px;}h4,.h4{font-size:15px;}h5,.h5{font-size:12px;}h6,.h6{font-size:11px;}p{margin:0 0 8.5px;}.lead{margin-bottom:17px;font-size:13px;font-weight:300;line-height:1.4;}@media (min-width:768px){.lead{font-size:18px;}}small,.small{font-size:91%;}mark,.mark{background-color:#fcf8e3;padding:.2em;}.text-left{text-align:left;}.text-right{text-align:right;}.text-center{text-align:center;}.text-justify{text-align:justify;}.text-nowrap{white-space:nowrap;}.text-lowercase{text-transform:lowercase;}.text-uppercase{text-transform:uppercase;}.text-capitalize{text-transform:capitalize;}.text-muted{color:#777777;}.text-primary{color:#2c3e50;}a.text-primary:hover,a.text-primary:focus{color:#1a242f;}.text-success{color:#18bc9c;}a.text-success:hover,a.text-success:focus{color:#128f76;}.text-info{color:#3498db;}a.text-info:hover,a.text-info:focus{color:#217dbb;}.text-warning{color:#f39c12;}a.text-warning:hover,a.text-warning:focus{color:#c87f0a;}.text-danger{color:#e74c3c;}a.text-danger:hover,a.text-danger:focus{color:#d62c1a;}.bg-primary{color:#fff;background-color:#2c3e50;}a.bg-primary:hover,a.bg-primary:focus{background-color:#1a242f;}.bg-success{background-color:#dff0d8;}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3;}.bg-info{background-color:#d9edf7;}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee;}.bg-warning{background-color:#fcf8e3;}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5;}.bg-danger{background-color:#f2dede;}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9;}.page-header{padding-bottom:7.5px;margin:34px 0 17px;border-bottom:1px solid #eeeeee;}ul,ol{margin-top:0;margin-bottom:8.5px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:0;}.list-unstyled{padding-left:0;list-style:none;}.list-inline{padding-left:0;list-style:none;margin-left:-5px;}.list-inline > li{display:inline-block;padding-left:5px;padding-right:5px;}dl{margin-top:0;margin-bottom:17px;}dt,dd{line-height:1.42857143;}dt{font-weight:bold;}dd{margin-left:0;}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.dl-horizontal dd{margin-left:180px;}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777777;}.initialism{font-size:90%;text-transform:uppercase;}blockquote{padding:8.5px 17px;margin:0 0 17px;font-size:15px;border-left:5px solid #eeeeee;}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0;}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777777;}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0';}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right;}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:'';}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014';}address{margin-bottom:17px;font-style:normal;line-height:1.42857143;}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px;}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none;}pre{display:block;padding:8px;margin:0 0 8.5px;font-size:11px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px;}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0;}.pre-scrollable{max-height:340px;overflow-y:scroll;}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}@media (min-width:768px){.container{width:750px;}}@media (min-width:992px){.container{width:970px;}}@media (min-width:1200px){.container{width:1170px;}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}.row{margin-left:-15px;margin-right:-15px;}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left;}.col-xs-12{width:100%;}.col-xs-11{width:91.66666667%;}.col-xs-10{width:83.33333333%;}.col-xs-9{width:75%;}.col-xs-8{width:66.66666667%;}.col-xs-7{width:58.33333333%;}.col-xs-6{width:50%;}.col-xs-5{width:41.66666667%;}.col-xs-4{width:33.33333333%;}.col-xs-3{width:25%;}.col-xs-2{width:16.66666667%;}.col-xs-1{width:8.33333333%;}.col-xs-pull-12{right:100%;}.col-xs-pull-11{right:91.66666667%;}.col-xs-pull-10{right:83.33333333%;}.col-xs-pull-9{right:75%;}.col-xs-pull-8{right:66.66666667%;}.col-xs-pull-7{right:58.33333333%;}.col-xs-pull-6{right:50%;}.col-xs-pull-5{right:41.66666667%;}.col-xs-pull-4{right:33.33333333%;}.col-xs-pull-3{right:25%;}.col-xs-pull-2{right:16.66666667%;}.col-xs-pull-1{right:8.33333333%;}.col-xs-pull-0{right:auto;}.col-xs-push-12{left:100%;}.col-xs-push-11{left:91.66666667%;}.col-xs-push-10{left:83.33333333%;}.col-xs-push-9{left:75%;}.col-xs-push-8{left:66.66666667%;}.col-xs-push-7{left:58.33333333%;}.col-xs-push-6{left:50%;}.col-xs-push-5{left:41.66666667%;}.col-xs-push-4{left:33.33333333%;}.col-xs-push-3{left:25%;}.col-xs-push-2{left:16.66666667%;}.col-xs-push-1{left:8.33333333%;}.col-xs-push-0{left:auto;}.col-xs-offset-12{margin-left:100%;}.col-xs-offset-11{margin-left:91.66666667%;}.col-xs-offset-10{margin-left:83.33333333%;}.col-xs-offset-9{margin-left:75%;}.col-xs-offset-8{margin-left:66.66666667%;}.col-xs-offset-7{margin-left:58.33333333%;}.col-xs-offset-6{margin-left:50%;}.col-xs-offset-5{margin-left:41.66666667%;}.col-xs-offset-4{margin-left:33.33333333%;}.col-xs-offset-3{margin-left:25%;}.col-xs-offset-2{margin-left:16.66666667%;}.col-xs-offset-1{margin-left:8.33333333%;}.col-xs-offset-0{margin-left:0%;}@media (min-width:768px){.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{float:left;}.col-sm-12{width:100%;}.col-sm-11{width:91.66666667%;}.col-sm-10{width:83.33333333%;}.col-sm-9{width:75%;}.col-sm-8{width:66.66666667%;}.col-sm-7{width:58.33333333%;}.col-sm-6{width:50%;}.col-sm-5{width:41.66666667%;}.col-sm-4{width:33.33333333%;}.col-sm-3{width:25%;}.col-sm-2{width:16.66666667%;}.col-sm-1{width:8.33333333%;}.col-sm-pull-12{right:100%;}.col-sm-pull-11{right:91.66666667%;}.col-sm-pull-10{right:83.33333333%;}.col-sm-pull-9{right:75%;}.col-sm-pull-8{right:66.66666667%;}.col-sm-pull-7{right:58.33333333%;}.col-sm-pull-6{right:50%;}.col-sm-pull-5{right:41.66666667%;}.col-sm-pull-4{right:33.33333333%;}.col-sm-pull-3{right:25%;}.col-sm-pull-2{right:16.66666667%;}.col-sm-pull-1{right:8.33333333%;}.col-sm-pull-0{right:auto;}.col-sm-push-12{left:100%;}.col-sm-push-11{left:91.66666667%;}.col-sm-push-10{left:83.33333333%;}.col-sm-push-9{left:75%;}.col-sm-push-8{left:66.66666667%;}.col-sm-push-7{left:58.33333333%;}.col-sm-push-6{left:50%;}.col-sm-push-5{left:41.66666667%;}.col-sm-push-4{left:33.33333333%;}.col-sm-push-3{left:25%;}.col-sm-push-2{left:16.66666667%;}.col-sm-push-1{left:8.33333333%;}.col-sm-push-0{left:auto;}.col-sm-offset-12{margin-left:100%;}.col-sm-offset-11{margin-left:91.66666667%;}.col-sm-offset-10{margin-left:83.33333333%;}.col-sm-offset-9{margin-left:75%;}.col-sm-offset-8{margin-left:66.66666667%;}.col-sm-offset-7{margin-left:58.33333333%;}.col-sm-offset-6{margin-left:50%;}.col-sm-offset-5{margin-left:41.66666667%;}.col-sm-offset-4{margin-left:33.33333333%;}.col-sm-offset-3{margin-left:25%;}.col-sm-offset-2{margin-left:16.66666667%;}.col-sm-offset-1{margin-left:8.33333333%;}.col-sm-offset-0{margin-left:0%;}}@media (min-width:992px){.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{float:left;}.col-md-12{width:100%;}.col-md-11{width:91.66666667%;}.col-md-10{width:83.33333333%;}.col-md-9{width:75%;}.col-md-8{width:66.66666667%;}.col-md-7{width:58.33333333%;}.col-md-6{width:50%;}.col-md-5{width:41.66666667%;}.col-md-4{width:33.33333333%;}.col-md-3{width:25%;}.col-md-2{width:16.66666667%;}.col-md-1{width:8.33333333%;}.col-md-pull-12{right:100%;}.col-md-pull-11{right:91.66666667%;}.col-md-pull-10{right:83.33333333%;}.col-md-pull-9{right:75%;}.col-md-pull-8{right:66.66666667%;}.col-md-pull-7{right:58.33333333%;}.col-md-pull-6{right:50%;}.col-md-pull-5{right:41.66666667%;}.col-md-pull-4{right:33.33333333%;}.col-md-pull-3{right:25%;}.col-md-pull-2{right:16.66666667%;}.col-md-pull-1{right:8.33333333%;}.col-md-pull-0{right:auto;}.col-md-push-12{left:100%;}.col-md-push-11{left:91.66666667%;}.col-md-push-10{left:83.33333333%;}.col-md-push-9{left:75%;}.col-md-push-8{left:66.66666667%;}.col-md-push-7{left:58.33333333%;}.col-md-push-6{left:50%;}.col-md-push-5{left:41.66666667%;}.col-md-push-4{left:33.33333333%;}.col-md-push-3{left:25%;}.col-md-push-2{left:16.66666667%;}.col-md-push-1{left:8.33333333%;}.col-md-push-0{left:auto;}.col-md-offset-12{margin-left:100%;}.col-md-offset-11{margin-left:91.66666667%;}.col-md-offset-10{margin-left:83.33333333%;}.col-md-offset-9{margin-left:75%;}.col-md-offset-8{margin-left:66.66666667%;}.col-md-offset-7{margin-left:58.33333333%;}.col-md-offset-6{margin-left:50%;}.col-md-offset-5{margin-left:41.66666667%;}.col-md-offset-4{margin-left:33.33333333%;}.col-md-offset-3{margin-left:25%;}.col-md-offset-2{margin-left:16.66666667%;}.col-md-offset-1{margin-left:8.33333333%;}.col-md-offset-0{margin-left:0%;}}@media (min-width:1200px){.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{float:left;}.col-lg-12{width:100%;}.col-lg-11{width:91.66666667%;}.col-lg-10{width:83.33333333%;}.col-lg-9{width:75%;}.col-lg-8{width:66.66666667%;}.col-lg-7{width:58.33333333%;}.col-lg-6{width:50%;}.col-lg-5{width:41.66666667%;}.col-lg-4{width:33.33333333%;}.col-lg-3{width:25%;}.col-lg-2{width:16.66666667%;}.col-lg-1{width:8.33333333%;}.col-lg-pull-12{right:100%;}.col-lg-pull-11{right:91.66666667%;}.col-lg-pull-10{right:83.33333333%;}.col-lg-pull-9{right:75%;}.col-lg-pull-8{right:66.66666667%;}.col-lg-pull-7{right:58.33333333%;}.col-lg-pull-6{right:50%;}.col-lg-pull-5{right:41.66666667%;}.col-lg-pull-4{right:33.33333333%;}.col-lg-pull-3{right:25%;}.col-lg-pull-2{right:16.66666667%;}.col-lg-pull-1{right:8.33333333%;}.col-lg-pull-0{right:auto;}.col-lg-push-12{left:100%;}.col-lg-push-11{left:91.66666667%;}.col-lg-push-10{left:83.33333333%;}.col-lg-push-9{left:75%;}.col-lg-push-8{left:66.66666667%;}.col-lg-push-7{left:58.33333333%;}.col-lg-push-6{left:50%;}.col-lg-push-5{left:41.66666667%;}.col-lg-push-4{left:33.33333333%;}.col-lg-push-3{left:25%;}.col-lg-push-2{left:16.66666667%;}.col-lg-push-1{left:8.33333333%;}.col-lg-push-0{left:auto;}.col-lg-offset-12{margin-left:100%;}.col-lg-offset-11{margin-left:91.66666667%;}.col-lg-offset-10{margin-left:83.33333333%;}.col-lg-offset-9{margin-left:75%;}.col-lg-offset-8{margin-left:66.66666667%;}.col-lg-offset-7{margin-left:58.33333333%;}.col-lg-offset-6{margin-left:50%;}.col-lg-offset-5{margin-left:41.66666667%;}.col-lg-offset-4{margin-left:33.33333333%;}.col-lg-offset-3{margin-left:25%;}.col-lg-offset-2{margin-left:16.66666667%;}.col-lg-offset-1{margin-left:8.33333333%;}.col-lg-offset-0{margin-left:0%;}}table{background-color:transparent;}caption{padding-top:8px;padding-bottom:8px;color:#777777;text-align:left;}th{text-align:left;}.table{width:100%;max-width:100%;margin-bottom:17px;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd;}.table > thead > tr > th{vertical-align:bottom;border-bottom:2px solid #ddd;}.table > caption + thead > tr:first-child > th,.table > colgroup + thead > tr:first-child > th,.table > thead:first-child > tr:first-child > th,.table > caption + thead > tr:first-child > td,.table > colgroup + thead > tr:first-child > td,.table > thead:first-child > tr:first-child > td{border-top:0;}.table > tbody + tbody{border-top:2px solid #ddd;}.table .table{background-color:#fff;}.table-condensed > thead > tr > th,.table-condensed > tbody > tr > th,.table-condensed > tfoot > tr > th,.table-condensed > thead > tr > td,.table-condensed > tbody > tr > td,.table-condensed > tfoot > tr > td{padding:5px;}.table-bordered{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.table-striped > tbody > tr:nth-of-type(odd){background-color:#f9f9f9;}.table-hover > tbody > tr:hover{background-color:#f5f5f5;}table col[class*="col-"]{position:static;float:none;display:table-column;}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell;}.table > thead > tr > td.active,.table > tbody > tr > td.active,.table > tfoot > tr > td.active,.table > thead > tr > th.active,.table > tbody > tr > th.active,.table > tfoot > tr > th.active,.table > thead > tr.active > td,.table > tbody > tr.active > td,.table > tfoot > tr.active > td,.table > thead > tr.active > th,.table > tbody > tr.active > th,.table > tfoot > tr.active > th{background-color:#f5f5f5;}.table-hover > tbody > tr > td.active:hover,.table-hover > tbody > tr > th.active:hover,.table-hover > tbody > tr.active:hover > td,.table-hover > tbody > tr:hover > .active,.table-hover > tbody > tr.active:hover > th{background-color:#e8e8e8;}.table > thead > tr > td.success,.table > tbody > tr > td.success,.table > tfoot > tr > td.success,.table > thead > tr > th.success,.table > tbody > tr > th.success,.table > tfoot > tr > th.success,.table > thead > tr.success > td,.table > tbody > tr.success > td,.table > tfoot > tr.success > td,.table > thead > tr.success > th,.table > tbody > tr.success > th,.table > tfoot > tr.success > th{background-color:#dff0d8;}.table-hover > tbody > tr > td.success:hover,.table-hover > tbody > tr > th.success:hover,.table-hover > tbody > tr.success:hover > td,.table-hover > tbody > tr:hover > .success,.table-hover > tbody > tr.success:hover > th{background-color:#d0e9c6;}.table > thead > tr > td.info,.table > tbody > tr > td.info,.table > tfoot > tr > td.info,.table > thead > tr > th.info,.table > tbody > tr > th.info,.table > tfoot > tr > th.info,.table > thead > tr.info > td,.table > tbody > tr.info > td,.table > tfoot > tr.info > td,.table > thead > tr.info > th,.table > tbody > tr.info > th,.table > tfoot > tr.info > th{background-color:#d9edf7;}.table-hover > tbody > tr > td.info:hover,.table-hover > tbody > tr > th.info:hover,.table-hover > tbody > tr.info:hover > td,.table-hover > tbody > tr:hover > .info,.table-hover > tbody > tr.info:hover > th{background-color:#c4e3f3;}.table > thead > tr > td.warning,.table > tbody > tr > td.warning,.table > tfoot > tr > td.warning,.table > thead > tr > th.warning,.table > tbody > tr > th.warning,.table > tfoot > tr > th.warning,.table > thead > tr.warning > td,.table > tbody > tr.warning > td,.table > tfoot > tr.warning > td,.table > thead > tr.warning > th,.table > tbody > tr.warning > th,.table > tfoot > tr.warning > th{background-color:#fcf8e3;}.table-hover > tbody > tr > td.warning:hover,.table-hover > tbody > tr > th.warning:hover,.table-hover > tbody > tr.warning:hover > td,.table-hover > tbody > tr:hover > .warning,.table-hover > tbody > tr.warning:hover > th{background-color:#faf2cc;}.table > thead > tr > td.danger,.table > tbody > tr > td.danger,.table > tfoot > tr > td.danger,.table > thead > tr > th.danger,.table > tbody > tr > th.danger,.table > tfoot > tr > th.danger,.table > thead > tr.danger > td,.table > tbody > tr.danger > td,.table > tfoot > tr.danger > td,.table > thead > tr.danger > th,.table > tbody > tr.danger > th,.table > tfoot > tr.danger > th{background-color:#f2dede;}.table-hover > tbody > tr > td.danger:hover,.table-hover > tbody > tr > th.danger:hover,.table-hover > tbody > tr.danger:hover > td,.table-hover > tbody > tr:hover > .danger,.table-hover > tbody > tr.danger:hover > th{background-color:#ebcccc;}.table-responsive{overflow-x:auto;min-height:0.01%;}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:12.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;}.table-responsive > .table{margin-bottom:0;}.table-responsive > .table > thead > tr > th,.table-responsive > .table > tbody > tr > th,.table-responsive > .table > tfoot > tr > th,.table-responsive > .table > thead > tr > td,.table-responsive > .table > tbody > tr > td,.table-responsive > .table > tfoot > tr > td{white-space:nowrap;}.table-responsive > .table-bordered{border:0;}.table-responsive > .table-bordered > thead > tr > th:first-child,.table-responsive > .table-bordered > tbody > tr > th:first-child,.table-responsive > .table-bordered > tfoot > tr > th:first-child,.table-responsive > .table-bordered > thead > tr > td:first-child,.table-responsive > .table-bordered > tbody > tr > td:first-child,.table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.table-responsive > .table-bordered > thead > tr > th:last-child,.table-responsive > .table-bordered > tbody > tr > th:last-child,.table-responsive > .table-bordered > tfoot > tr > th:last-child,.table-responsive > .table-bordered > thead > tr > td:last-child,.table-responsive > .table-bordered > tbody > tr > td:last-child,.table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.table-responsive > .table-bordered > tbody > tr:last-child > th,.table-responsive > .table-bordered > tfoot > tr:last-child > th,.table-responsive > .table-bordered > tbody > tr:last-child > td,.table-responsive > .table-bordered > tfoot > tr:last-child > td{border-bottom:0;}}fieldset{padding:0;margin:0;border:0;min-width:0;}legend{display:block;width:100%;padding:0;margin-bottom:17px;font-size:18px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold;}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal;}input[type="file"]{display:block;}input[type="range"]{display:block;width:100%;}select[multiple],select[size]{height:auto;}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}output{display:block;padding-top:7px;font-size:12px;line-height:1.42857143;color:#555555;}.form-control{display:block;width:100%;height:31px;padding:6px 12px;font-size:12px;line-height:1.42857143;color:#555555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);}.form-control::-moz-placeholder{color:#999;opacity:1;}.form-control:-ms-input-placeholder{color:#999;}.form-control::-webkit-input-placeholder{color:#999;}.form-control::-ms-expand{border:0;background-color:transparent;}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1;}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed;}textarea.form-control{height:auto;}input[type="search"]{-webkit-appearance:none;}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:31px;}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:28px;}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:42px;}}.form-group{margin-bottom:15px;}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px;}.radio label,.checkbox label{min-height:17px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer;}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9;}.radio + .radio,.checkbox + .checkbox{margin-top:-5px;}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer;}.radio-inline + .radio-inline,.checkbox-inline + .checkbox-inline{margin-top:0;margin-left:10px;}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed;}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed;}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:29px;}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0;}.input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-sm{height:28px;line-height:28px;}textarea.input-sm,select[multiple].input-sm{height:auto;}.form-group-sm .form-control{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.form-group-sm select.form-control{height:28px;line-height:28px;}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto;}.form-group-sm .form-control-static{height:28px;min-height:28px;padding:6px 10px;font-size:11px;line-height:1.5;}.input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-lg{height:42px;line-height:42px;}textarea.input-lg,select[multiple].input-lg{height:auto;}.form-group-lg .form-control{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.form-group-lg select.form-control{height:42px;line-height:42px;}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto;}.form-group-lg .form-control-static{height:42px;min-height:32px;padding:11px 16px;font-size:15px;line-height:1.3333333;}.has-feedback{position:relative;}.has-feedback .form-control{padding-right:38.75px;}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:31px;height:31px;line-height:31px;text-align:center;pointer-events:none;}.input-lg + .form-control-feedback,.input-group-lg + .form-control-feedback,.form-group-lg .form-control + .form-control-feedback{width:42px;height:42px;line-height:42px;}.input-sm + .form-control-feedback,.input-group-sm + .form-control-feedback,.form-group-sm .form-control + .form-control-feedback{width:28px;height:28px;line-height:28px;}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#18bc9c;}.has-success .form-control{border-color:#18bc9c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-success .form-control:focus{border-color:#128f76;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;}.has-success .input-group-addon{color:#18bc9c;border-color:#18bc9c;background-color:#dff0d8;}.has-success .form-control-feedback{color:#18bc9c;}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f39c12;}.has-warning .form-control{border-color:#f39c12;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-warning .form-control:focus{border-color:#c87f0a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;}.has-warning .input-group-addon{color:#f39c12;border-color:#f39c12;background-color:#fcf8e3;}.has-warning .form-control-feedback{color:#f39c12;}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#e74c3c;}.has-error .form-control{border-color:#e74c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-error .form-control:focus{border-color:#d62c1a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;}.has-error .input-group-addon{color:#e74c3c;border-color:#e74c3c;background-color:#f2dede;}.has-error .form-control-feedback{color:#e74c3c;}.has-feedback label ~ .form-control-feedback{top:22px;}.has-feedback label.sr-only ~ .form-control-feedback{top:0;}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle;}.form-inline .form-control-static{display:inline-block;}.form-inline .input-group{display:inline-table;vertical-align:middle;}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto;}.form-inline .input-group > .form-control{width:100%;}.form-inline .control-label{margin-bottom:0;vertical-align:middle;}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.form-inline .radio label,.form-inline .checkbox label{padding-left:0;}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.form-inline .has-feedback .form-control-feedback{top:0;}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px;}.form-horizontal .radio,.form-horizontal .checkbox{min-height:24px;}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px;}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px;}}.form-horizontal .has-feedback .form-control-feedback{right:15px;}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:15px;}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:11px;}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none;}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none;}.btn-default{color:#333;background-color:#fff;border-color:#ccc;}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c;}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active:hover,.btn-default.active:hover,.open > .dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open > .dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open > .dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{background-image:none;}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc;}.btn-default .badge{color:#fff;background-color:#333;}.btn-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#1a242f;border-color:#000000;}.btn-primary:hover{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active:hover,.btn-primary.active:hover,.open > .dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open > .dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open > .dropdown-toggle.btn-primary.focus{color:#fff;background-color:#0d1318;border-color:#000000;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{background-image:none;}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2c3e50;border-color:#2c3e50;}.btn-primary .badge{color:#2c3e50;background-color:#fff;}.btn-success{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#128f76;border-color:#0a4b3e;}.btn-success:hover{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active:hover,.btn-success.active:hover,.open > .dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open > .dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open > .dropdown-toggle.btn-success.focus{color:#fff;background-color:#0e6f5c;border-color:#0a4b3e;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{background-image:none;}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#18bc9c;border-color:#18bc9c;}.btn-success .badge{color:#18bc9c;background-color:#fff;}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db;}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#217dbb;border-color:#16527a;}.btn-info:hover{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active:hover,.btn-info.active:hover,.open > .dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open > .dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open > .dropdown-toggle.btn-info.focus{color:#fff;background-color:#1c699d;border-color:#16527a;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{background-image:none;}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db;}.btn-info .badge{color:#3498db;background-color:#fff;}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12;}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#c87f0a;border-color:#7f5006;}.btn-warning:hover{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active:hover,.btn-warning.active:hover,.open > .dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open > .dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open > .dropdown-toggle.btn-warning.focus{color:#fff;background-color:#a66908;border-color:#7f5006;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{background-image:none;}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12;}.btn-warning .badge{color:#f39c12;background-color:#fff;}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#d62c1a;border-color:#921e12;}.btn-danger:hover{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active:hover,.btn-danger.active:hover,.open > .dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open > .dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open > .dropdown-toggle.btn-danger.focus{color:#fff;background-color:#b62516;border-color:#921e12;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{background-image:none;}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c;}.btn-danger .badge{color:#e74c3c;background-color:#fff;}.btn-link{color:#2c3e50;font-weight:normal;border-radius:0;}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent;}.btn-link:hover,.btn-link:focus{color:#11181f;text-decoration:underline;background-color:transparent;}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777777;text-decoration:none;}.btn-lg,.btn-group-lg > .btn{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.btn-sm,.btn-group-sm > .btn{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-xs,.btn-group-xs > .btn{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-block{display:block;width:100%;}.btn-block + .btn-block{margin-top:5px;}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}.collapse{display:none;}.collapse.in{display:block;}tr.collapse.in{display:table-row;}tbody.collapse.in{display:table-row-group;}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease;}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent;}.dropup,.dropdown{position:relative;}.dropdown-toggle:focus{outline:0;}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}.dropdown-menu .divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap;}.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5;}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;outline:0;background-color:#2c3e50;}.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#777777;}.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed;}.open > .dropdown-menu{display:block;}.open > a{outline:0;}.dropdown-menu-right{left:auto;right:0;}.dropdown-menu-left{left:0;right:auto;}.dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#777777;white-space:nowrap;}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}.pull-right > .dropdown-menu{right:0;left:auto;}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:"";}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px;}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0;}.navbar-right .dropdown-menu-left{left:0;right:auto;}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle;}.btn-group > .btn,.btn-group-vertical > .btn{position:relative;float:left;}.btn-group > .btn:hover,.btn-group-vertical > .btn:hover,.btn-group > .btn:focus,.btn-group-vertical > .btn:focus,.btn-group > .btn:active,.btn-group-vertical > .btn:active,.btn-group > .btn.active,.btn-group-vertical > .btn.active{z-index:2;}.btn-group .btn + .btn,.btn-group .btn + .btn-group,.btn-group .btn-group + .btn,.btn-group .btn-group + .btn-group{margin-left:-1px;}.btn-toolbar{margin-left:-5px;}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left;}.btn-toolbar > .btn,.btn-toolbar > .btn-group,.btn-toolbar > .input-group{margin-left:5px;}.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0;}.btn-group > .btn:first-child{margin-left:0;}.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group > .btn-group{float:left;}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}.btn-group > .btn + .dropdown-toggle{padding-left:8px;padding-right:8px;}.btn-group > .btn-lg + .dropdown-toggle{padding-left:12px;padding-right:12px;}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn .caret{margin-left:0;}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0;}.dropup .btn-lg .caret{border-width:0 5px 5px;}.btn-group-vertical > .btn,.btn-group-vertical > .btn-group,.btn-group-vertical > .btn-group > .btn{display:block;float:none;width:100%;max-width:100%;}.btn-group-vertical > .btn-group > .btn{float:none;}.btn-group-vertical > .btn + .btn,.btn-group-vertical > .btn + .btn-group,.btn-group-vertical > .btn-group + .btn,.btn-group-vertical > .btn-group + .btn-group{margin-top:-1px;margin-left:0;}.btn-group-vertical > .btn:not(:first-child):not(:last-child){border-radius:0;}.btn-group-vertical > .btn:first-child:not(:last-child){border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child{border-top-right-radius:0;border-top-left-radius:0;}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate;}.btn-group-justified > .btn,.btn-group-justified > .btn-group{float:none;display:table-cell;width:1%;}.btn-group-justified > .btn-group .btn{width:100%;}.btn-group-justified > .btn-group .dropdown-menu{left:auto;}[data-toggle="buttons"] > .btn input[type="radio"],[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],[data-toggle="buttons"] > .btn input[type="checkbox"],[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none;}.input-group{position:relative;display:table;border-collapse:separate;}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0;}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0;}.input-group .form-control:focus{z-index:3;}.input-group-lg > .form-control,.input-group-lg > .input-group-addon,.input-group-lg > .input-group-btn > .btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-group-lg > .form-control,select.input-group-lg > .input-group-addon,select.input-group-lg > .input-group-btn > .btn{height:42px;line-height:42px;}textarea.input-group-lg > .form-control,textarea.input-group-lg > .input-group-addon,textarea.input-group-lg > .input-group-btn > .btn,select[multiple].input-group-lg > .form-control,select[multiple].input-group-lg > .input-group-addon,select[multiple].input-group-lg > .input-group-btn > .btn{height:auto;}.input-group-sm > .form-control,.input-group-sm > .input-group-addon,.input-group-sm > .input-group-btn > .btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-group-sm > .form-control,select.input-group-sm > .input-group-addon,select.input-group-sm > .input-group-btn > .btn{height:28px;line-height:28px;}textarea.input-group-sm > .form-control,textarea.input-group-sm > .input-group-addon,textarea.input-group-sm > .input-group-btn > .btn,select[multiple].input-group-sm > .form-control,select[multiple].input-group-sm > .input-group-addon,select[multiple].input-group-sm > .input-group-btn > .btn{height:auto;}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell;}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0;}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle;}.input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #ccc;border-radius:3px;}.input-group-addon.input-sm{padding:5px 10px;font-size:11px;border-radius:2px;}.input-group-addon.input-lg{padding:10px 16px;font-size:15px;border-radius:5px;}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0;}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group > .btn,.input-group-btn:first-child > .dropdown-toggle,.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child > .btn-group:not(:last-child) > .btn{border-bottom-right-radius:0;border-top-right-radius:0;}.input-group-addon:first-child{border-right:0;}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group > .btn,.input-group-btn:last-child > .dropdown-toggle,.input-group-btn:first-child > .btn:not(:first-child),.input-group-btn:first-child > .btn-group:not(:first-child) > .btn{border-bottom-left-radius:0;border-top-left-radius:0;}.input-group-addon:last-child{border-left:0;}.input-group-btn{position:relative;font-size:0;white-space:nowrap;}.input-group-btn > .btn{position:relative;}.input-group-btn > .btn + .btn{margin-left:-1px;}.input-group-btn > .btn:hover,.input-group-btn > .btn:focus,.input-group-btn > .btn:active{z-index:2;}.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group{margin-right:-1px;}.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group{z-index:2;margin-left:-1px;}.nav{margin-bottom:0;padding-left:0;list-style:none;}.nav > li{position:relative;display:block;}.nav > li > a{position:relative;display:block;padding:10px 15px;}.nav > li > a:hover,.nav > li > a:focus{text-decoration:none;background-color:#eeeeee;}.nav > li.disabled > a{color:#777777;}.nav > li.disabled > a:hover,.nav > li.disabled > a:focus{color:#777777;text-decoration:none;background-color:transparent;cursor:not-allowed;}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{background-color:#eeeeee;border-color:#2c3e50;}.nav .nav-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.nav > li > a > img{max-width:none;}.nav-tabs{border-bottom:1px solid #ddd;}.nav-tabs > li{float:left;margin-bottom:-1px;}.nav-tabs > li > a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0;}.nav-tabs > li > a:hover{border-color:#eeeeee #eeeeee #ddd;}.nav-tabs > li.active > a,.nav-tabs > li.active > a:hover,.nav-tabs > li.active > a:focus{color:#555555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}.nav-tabs.nav-justified{width:100%;border-bottom:0;}.nav-tabs.nav-justified > li{float:none;}.nav-tabs.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-tabs.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-tabs.nav-justified > li{display:table-cell;width:1%;}.nav-tabs.nav-justified > li > a{margin-bottom:0;}}.nav-tabs.nav-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs.nav-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border-bottom-color:#fff;}}.nav-pills > li{float:left;}.nav-pills > li > a{border-radius:3px;}.nav-pills > li + li{margin-left:2px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{color:#fff;background-color:#2c3e50;}.nav-stacked > li{float:none;}.nav-stacked > li + li{margin-top:2px;margin-left:0;}.nav-justified{width:100%;}.nav-justified > li{float:none;}.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-justified > li{display:table-cell;width:1%;}.nav-justified > li > a{margin-bottom:0;}}.nav-tabs-justified{border-bottom:0;}.nav-tabs-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border-bottom-color:#fff;}}.tab-content > .tab-pane{display:none;}.tab-content > .active{display:block;}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0;}.navbar{position:relative;min-height:50px;margin-bottom:17px;border:1px solid transparent;}@media (min-width:768px){.navbar{border-radius:3px;}}@media (min-width:768px){.navbar-header{float:left;}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch;}.navbar-collapse.in{overflow-y:auto;}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none;}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important;}.navbar-collapse.in{overflow-y:visible;}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0;}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px;}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px;}}.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:-15px;margin-left:-15px;}@media (min-width:768px){.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:0;margin-left:0;}}.navbar-static-top{z-index:1000;border-width:0 0 1px;}@media (min-width:768px){.navbar-static-top{border-radius:0;}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0;}}.navbar-fixed-top{top:0;border-width:0 0 1px;}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0;}.navbar-brand{float:left;padding:16.5px 15px;font-size:15px;line-height:17px;height:50px;}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none;}.navbar-brand > img{display:block;}@media (min-width:768px){.navbar > .container .navbar-brand,.navbar > .container-fluid .navbar-brand{margin-left:-15px;}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;}.navbar-toggle:focus{outline:0;}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;}.navbar-toggle .icon-bar + .icon-bar{margin-top:4px;}@media (min-width:768px){.navbar-toggle{display:none;}}.navbar-nav{margin:8.25px -15px;}.navbar-nav > li > a{padding-top:10px;padding-bottom:10px;line-height:17px;}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none;}.navbar-nav .open .dropdown-menu > li > a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px;}.navbar-nav .open .dropdown-menu > li > a{line-height:17px;}.navbar-nav .open .dropdown-menu > li > a:hover,.navbar-nav .open .dropdown-menu > li > a:focus{background-image:none;}}@media (min-width:768px){.navbar-nav{float:left;margin:0;}.navbar-nav > li{float:left;}.navbar-nav > li > a{padding-top:16.5px;padding-bottom:16.5px;}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:9.5px;margin-bottom:9.5px;}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle;}.navbar-form .form-control-static{display:inline-block;}.navbar-form .input-group{display:inline-table;vertical-align:middle;}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto;}.navbar-form .input-group > .form-control{width:100%;}.navbar-form .control-label{margin-bottom:0;vertical-align:middle;}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0;}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.navbar-form .has-feedback .form-control-feedback{top:0;}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px;}.navbar-form .form-group:last-child{margin-bottom:0;}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none;}}.navbar-nav > li > .dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0;}.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.navbar-btn{margin-top:9.5px;margin-bottom:9.5px;}.navbar-btn.btn-sm{margin-top:11px;margin-bottom:11px;}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px;}.navbar-text{margin-top:16.5px;margin-bottom:16.5px;}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px;}}@media (min-width:768px){.navbar-left{float:left !important;}.navbar-right{float:right !important;margin-right:-15px;}.navbar-right ~ .navbar-right{margin-right:0;}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7;}.navbar-default .navbar-brand{color:#777;}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent;}.navbar-default .navbar-text{color:#777;}.navbar-default .navbar-nav > li > a{color:#777;}.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav > .disabled > a,.navbar-default .navbar-nav > .disabled > a:hover,.navbar-default .navbar-nav > .disabled > a:focus{color:#ccc;background-color:transparent;}.navbar-default .navbar-toggle{border-color:#ddd;}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd;}.navbar-default .navbar-toggle .icon-bar{background-color:#888;}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7;}.navbar-default .navbar-nav > .open > a,.navbar-default .navbar-nav > .open > a:hover,.navbar-default .navbar-nav > .open > a:focus{background-color:#e7e7e7;color:#555;}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu > li > a{color:#777;}.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav .open .dropdown-menu > .active > a,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#ccc;background-color:transparent;}}.navbar-default .navbar-link{color:#777;}.navbar-default .navbar-link:hover{color:#333;}.navbar-default .btn-link{color:#777;}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333;}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc;}.navbar-inverse{background-color:#222;border-color:#080808;}.navbar-inverse .navbar-brand{color:#9d9d9d;}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-text{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a:hover,.navbar-inverse .navbar-nav > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav > .active > a,.navbar-inverse .navbar-nav > .active > a:hover,.navbar-inverse .navbar-nav > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav > .disabled > a,.navbar-inverse .navbar-nav > .disabled > a:hover,.navbar-inverse .navbar-nav > .disabled > a:focus{color:#444;background-color:transparent;}.navbar-inverse .navbar-toggle{border-color:#333;}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333;}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff;}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010;}.navbar-inverse .navbar-nav > .open > a,.navbar-inverse .navbar-nav > .open > a:hover,.navbar-inverse .navbar-nav > .open > a:focus{background-color:#080808;color:#fff;}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header{border-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#444;background-color:transparent;}}.navbar-inverse .navbar-link{color:#9d9d9d;}.navbar-inverse .navbar-link:hover{color:#fff;}.navbar-inverse .btn-link{color:#9d9d9d;}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff;}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444;}.breadcrumb{padding:8px 15px;margin-bottom:17px;list-style:none;background-color:#f5f5f5;border-radius:3px;}.breadcrumb > li{display:inline-block;}.breadcrumb > li + li:before{content:"/\00a0";padding:0 5px;color:#ccc;}.breadcrumb > .active{color:#777777;}.pagination{display:inline-block;padding-left:0;margin:17px 0;border-radius:3px;}.pagination > li{display:inline;}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#2c3e50;background-color:#fff;border:1px solid #ddd;margin-left:-1px;}.pagination > li:first-child > a,.pagination > li:first-child > span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px;}.pagination > li:last-child > a,.pagination > li:last-child > span{border-bottom-right-radius:3px;border-top-right-radius:3px;}.pagination > li > a:hover,.pagination > li > span:hover,.pagination > li > a:focus,.pagination > li > span:focus{z-index:2;color:#11181f;background-color:#eeeeee;border-color:#ddd;}.pagination > .active > a,.pagination > .active > span,.pagination > .active > a:hover,.pagination > .active > span:hover,.pagination > .active > a:focus,.pagination > .active > span:focus{z-index:3;color:#fff;background-color:#2c3e50;border-color:#2c3e50;cursor:default;}.pagination > .disabled > span,.pagination > .disabled > span:hover,.pagination > .disabled > span:focus,.pagination > .disabled > a,.pagination > .disabled > a:hover,.pagination > .disabled > a:focus{color:#777777;background-color:#fff;border-color:#ddd;cursor:not-allowed;}.pagination-lg > li > a,.pagination-lg > li > span{padding:10px 16px;font-size:15px;line-height:1.3333333;}.pagination-lg > li:first-child > a,.pagination-lg > li:first-child > span{border-bottom-left-radius:5px;border-top-left-radius:5px;}.pagination-lg > li:last-child > a,.pagination-lg > li:last-child > span{border-bottom-right-radius:5px;border-top-right-radius:5px;}.pagination-sm > li > a,.pagination-sm > li > span{padding:5px 10px;font-size:11px;line-height:1.5;}.pagination-sm > li:first-child > a,.pagination-sm > li:first-child > span{border-bottom-left-radius:2px;border-top-left-radius:2px;}.pagination-sm > li:last-child > a,.pagination-sm > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px;}.pager{padding-left:0;margin:17px 0;list-style:none;text-align:center;}.pager li{display:inline;}.pager li > a,.pager li > span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px;}.pager li > a:hover,.pager li > a:focus{text-decoration:none;background-color:#eeeeee;}.pager .next > a,.pager .next > span{float:right;}.pager .previous > a,.pager .previous > span{float:left;}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{color:#777777;background-color:#fff;cursor:not-allowed;}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer;}.label:empty{display:none;}.btn .label{position:relative;top:-1px;}.label-default{background-color:#777777;}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e;}.label-primary{background-color:#2c3e50;}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f;}.label-success{background-color:#18bc9c;}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76;}.label-info{background-color:#3498db;}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb;}.label-warning{background-color:#f39c12;}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a;}.label-danger{background-color:#e74c3c;}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a;}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777777;border-radius:10px;}.badge:empty{display:none;}.btn .badge{position:relative;top:-1px;}.btn-xs .badge,.btn-group-xs > .btn .badge{top:0;padding:1px 5px;}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer;}.list-group-item.active > .badge,.nav-pills > .active > a > .badge{color:#2c3e50;background-color:#fff;}.list-group-item > .badge{float:right;}.list-group-item > .badge + .badge{margin-right:5px;}.nav-pills > li > a > .badge{margin-left:3px;}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee;}.jumbotron h1,.jumbotron .h1{color:inherit;}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200;}.jumbotron > hr{border-top-color:#d5d5d5;}.container .jumbotron,.container-fluid .jumbotron{border-radius:5px;padding-left:15px;padding-right:15px;}.jumbotron .container{max-width:100%;}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px;}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px;}.jumbotron h1,.jumbotron .h1{font-size:54px;}}.thumbnail{display:block;padding:4px;margin-bottom:17px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out;}.thumbnail > img,.thumbnail a > img{margin-left:auto;margin-right:auto;}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2c3e50;}.thumbnail .caption{padding:9px;color:#333333;}.alert{padding:15px;margin-bottom:17px;border:1px solid transparent;border-radius:3px;}.alert h4{margin-top:0;color:inherit;}.alert .alert-link{font-weight:bold;}.alert > p,.alert > ul{margin-bottom:0;}.alert > p + p{margin-top:5px;}.alert-dismissable,.alert-dismissible{padding-right:35px;}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit;}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#18bc9c;}.alert-success hr{border-top-color:#c9e2b3;}.alert-success .alert-link{color:#128f76;}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3498db;}.alert-info hr{border-top-color:#a6e1ec;}.alert-info .alert-link{color:#217dbb;}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#f39c12;}.alert-warning hr{border-top-color:#f7e1b5;}.alert-warning .alert-link{color:#c87f0a;}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#e74c3c;}.alert-danger hr{border-top-color:#e4b9c0;}.alert-danger .alert-link{color:#d62c1a;}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}.progress{overflow:hidden;height:17px;margin-bottom:17px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);}.progress-bar{float:left;width:0%;height:100%;font-size:11px;line-height:17px;color:#fff;text-align:center;background-color:#2c3e50;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px;}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.media{margin-top:15px;}.media:first-child{margin-top:0;}.media,.media-body{zoom:1;overflow:hidden;}.media-body{width:10000px;}.media-object{display:block;}.media-object.img-thumbnail{max-width:none;}.media-right,.media > .pull-right{padding-left:10px;}.media-left,.media > .pull-left{padding-right:10px;}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top;}.media-middle{vertical-align:middle;}.media-bottom{vertical-align:bottom;}.media-heading{margin-top:0;margin-bottom:5px;}.media-list{padding-left:0;list-style:none;}.list-group{margin-bottom:20px;padding-left:0;}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd;}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px;}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}a.list-group-item,button.list-group-item{color:#555;}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333;}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5;}button.list-group-item{width:100%;text-align:left;}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#777777;cursor:not-allowed;}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit;}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777777;}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading > small,.list-group-item.active:hover .list-group-item-heading > small,.list-group-item.active:focus .list-group-item-heading > small,.list-group-item.active .list-group-item-heading > .small,.list-group-item.active:hover .list-group-item-heading > .small,.list-group-item.active:focus .list-group-item-heading > .small{color:inherit;}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be;}.list-group-item-success{color:#18bc9c;background-color:#dff0d8;}a.list-group-item-success,button.list-group-item-success{color:#18bc9c;}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit;}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#18bc9c;background-color:#d0e9c6;}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.list-group-item-info{color:#3498db;background-color:#d9edf7;}a.list-group-item-info,button.list-group-item-info{color:#3498db;}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit;}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3498db;background-color:#c4e3f3;}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3498db;border-color:#3498db;}.list-group-item-warning{color:#f39c12;background-color:#fcf8e3;}a.list-group-item-warning,button.list-group-item-warning{color:#f39c12;}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit;}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f39c12;background-color:#faf2cc;}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f39c12;border-color:#f39c12;}.list-group-item-danger{color:#e74c3c;background-color:#f2dede;}a.list-group-item-danger,button.list-group-item-danger{color:#e74c3c;}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit;}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#e74c3c;background-color:#ebcccc;}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.list-group-item-heading{margin-top:0;margin-bottom:5px;}.list-group-item-text{margin-bottom:0;line-height:1.3;}.panel{margin-bottom:17px;background-color:#fff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05);}.panel-body{padding:15px;}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px;}.panel-heading > .dropdown .dropdown-toggle{color:inherit;}.panel-title{margin-top:0;margin-bottom:0;font-size:14px;color:inherit;}.panel-title > a,.panel-title > small,.panel-title > .small,.panel-title > small > a,.panel-title > .small > a{color:inherit;}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .list-group,.panel > .panel-collapse > .list-group{margin-bottom:0;}.panel > .list-group .list-group-item,.panel > .panel-collapse > .list-group .list-group-item{border-width:1px 0;border-radius:0;}.panel > .list-group:first-child .list-group-item:first-child,.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .list-group:last-child .list-group-item:last-child,.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0;}.panel-heading + .list-group .list-group-item:first-child{border-top-width:0;}.list-group + .panel-footer{border-top-width:0;}.panel > .table,.panel > .table-responsive > .table,.panel > .panel-collapse > .table{margin-bottom:0;}.panel > .table caption,.panel > .table-responsive > .table caption,.panel > .panel-collapse > .table caption{padding-left:15px;padding-right:15px;}.panel > .table:first-child,.panel > .table-responsive:first-child > .table:first-child{border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child{border-top-left-radius:2px;border-top-right-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child{border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child{border-top-right-radius:2px;}.panel > .table:last-child,.panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child{border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child{border-bottom-right-radius:2px;}.panel > .panel-body + .table,.panel > .panel-body + .table-responsive,.panel > .table + .panel-body,.panel > .table-responsive + .panel-body{border-top:1px solid #ddd;}.panel > .table > tbody:first-child > tr:first-child th,.panel > .table > tbody:first-child > tr:first-child td{border-top:0;}.panel > .table-bordered,.panel > .table-responsive > .table-bordered{border:0;}.panel > .table-bordered > thead > tr > th:first-child,.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,.panel > .table-bordered > tbody > tr > th:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,.panel > .table-bordered > tfoot > tr > th:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,.panel > .table-bordered > thead > tr > td:first-child,.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,.panel > .table-bordered > tbody > tr > td:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,.panel > .table-bordered > tfoot > tr > td:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.panel > .table-bordered > thead > tr > th:last-child,.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,.panel > .table-bordered > tbody > tr > th:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,.panel > .table-bordered > tfoot > tr > th:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,.panel > .table-bordered > thead > tr > td:last-child,.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,.panel > .table-bordered > tbody > tr > td:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,.panel > .table-bordered > tfoot > tr > td:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.panel > .table-bordered > thead > tr:first-child > td,.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,.panel > .table-bordered > tbody > tr:first-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,.panel > .table-bordered > thead > tr:first-child > th,.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,.panel > .table-bordered > tbody > tr:first-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th{border-bottom:0;}.panel > .table-bordered > tbody > tr:last-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,.panel > .table-bordered > tfoot > tr:last-child > td,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,.panel > .table-bordered > tbody > tr:last-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,.panel > .table-bordered > tfoot > tr:last-child > th,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th{border-bottom:0;}.panel > .table-responsive{border:0;margin-bottom:0;}.panel-group{margin-bottom:17px;}.panel-group .panel{margin-bottom:0;border-radius:3px;}.panel-group .panel + .panel{margin-top:5px;}.panel-group .panel-heading{border-bottom:0;}.panel-group .panel-heading + .panel-collapse > .panel-body,.panel-group .panel-heading + .panel-collapse > .list-group{border-top:1px solid #ddd;}.panel-group .panel-footer{border-top:0;}.panel-group .panel-footer + .panel-collapse .panel-body{border-bottom:1px solid #ddd;}.panel-default{border-color:#ddd;}.panel-default > .panel-heading{color:#333333;background-color:#f5f5f5;border-color:#ddd;}.panel-default > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ddd;}.panel-default > .panel-heading .badge{color:#f5f5f5;background-color:#333333;}.panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ddd;}.panel-primary{border-color:#2c3e50;}.panel-primary > .panel-heading{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#2c3e50;}.panel-primary > .panel-heading .badge{color:#2c3e50;background-color:#fff;}.panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#2c3e50;}.panel-success{border-color:#d6e9c6;}.panel-success > .panel-heading{color:#18bc9c;background-color:#dff0d8;border-color:#d6e9c6;}.panel-success > .panel-heading + .panel-collapse > .panel-body{border-top-color:#d6e9c6;}.panel-success > .panel-heading .badge{color:#dff0d8;background-color:#18bc9c;}.panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#d6e9c6;}.panel-info{border-color:#bce8f1;}.panel-info > .panel-heading{color:#3498db;background-color:#d9edf7;border-color:#bce8f1;}.panel-info > .panel-heading + .panel-collapse > .panel-body{border-top-color:#bce8f1;}.panel-info > .panel-heading .badge{color:#d9edf7;background-color:#3498db;}.panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#bce8f1;}.panel-warning{border-color:#faebcc;}.panel-warning > .panel-heading{color:#f39c12;background-color:#fcf8e3;border-color:#faebcc;}.panel-warning > .panel-heading + .panel-collapse > .panel-body{border-top-color:#faebcc;}.panel-warning > .panel-heading .badge{color:#fcf8e3;background-color:#f39c12;}.panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#faebcc;}.panel-danger{border-color:#ebccd1;}.panel-danger > .panel-heading{color:#e74c3c;background-color:#f2dede;border-color:#ebccd1;}.panel-danger > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ebccd1;}.panel-danger > .panel-heading .badge{color:#f2dede;background-color:#e74c3c;}.panel-danger > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ebccd1;}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden;}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0;}.embed-responsive-16by9{padding-bottom:56.25%;}.embed-responsive-4by3{padding-bottom:75%;}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15);}.well-lg{padding:24px;border-radius:5px;}.well-sm{padding:9px;border-radius:2px;}.close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.modal-open{overflow:hidden;}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0;}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.modal-open .modal{overflow-x:hidden;overflow-y:auto;}.modal-dialog{position:relative;width:auto;margin:10px;}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0;}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000;}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0);}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50);}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;}.modal-header .close{margin-top:-2px;}.modal-title{margin:0;line-height:1.42857143;}.modal-body{position:relative;padding:15px;}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5;}.modal-footer .btn + .btn{margin-left:5px;margin-bottom:0;}.modal-footer .btn-group .btn + .btn{margin-left:-1px;}.modal-footer .btn-block + .btn-block{margin-left:0;}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll;}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5);}.modal-sm{width:300px;}}@media (min-width:992px){.modal-lg{width:900px;}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.9;filter:alpha(opacity=90);}.tooltip.top{margin-top:-3px;padding:5px 0;}.tooltip.right{margin-left:3px;padding:0 5px;}.tooltip.bottom{margin-top:3px;padding:5px 0;}.tooltip.left{margin-left:-3px;padding:0 5px;}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px;}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000;}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000;}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);}.popover.top{margin-top:-10px;}.popover.right{margin-left:10px;}.popover.bottom{margin-top:10px;}.popover.left{margin-left:-10px;}.popover-title{margin:0;padding:8px 14px;font-size:12px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0;}.popover-content{padding:9px 14px;}.popover > .arrow,.popover > .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}.popover > .arrow{border-width:11px;}.popover > .arrow:after{border-width:10px;content:"";}.popover.top > .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px;}.popover.top > .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff;}.popover.right > .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25);}.popover.right > .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff;}.popover.bottom > .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px;}.popover.bottom > .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff;}.popover.left > .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25);}.popover.left > .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px;}.carousel{position:relative;}.carousel-inner{position:relative;overflow:hidden;width:100%;}.carousel-inner > .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner > .item > img,.carousel-inner > .item > a > img{line-height:1;}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner > .item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px;}.carousel-inner > .item.next,.carousel-inner > .item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0;}.carousel-inner > .item.prev,.carousel-inner > .item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0;}.carousel-inner > .item.next.left,.carousel-inner > .item.prev.right,.carousel-inner > .item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0;}}.carousel-inner > .active,.carousel-inner > .next,.carousel-inner > .prev{display:block;}.carousel-inner > .active{left:0;}.carousel-inner > .next,.carousel-inner > .prev{position:absolute;top:0;width:100%;}.carousel-inner > .next{left:100%;}.carousel-inner > .prev{left:-100%;}.carousel-inner > .next.left,.carousel-inner > .prev.right{left:0;}.carousel-inner > .active.left{left:-100%;}.carousel-inner > .active.right{left:100%;}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1);}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1);}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block;}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px;}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px;}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif;}.carousel-control .icon-prev:before{content:'\2039';}.carousel-control .icon-next:before{content:'\203a';}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center;}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff;}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);}.carousel-caption .btn{text-shadow:none;}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px;}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px;}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px;}.carousel-caption{left:20%;right:20%;padding-bottom:30px;}.carousel-indicators{bottom:20px;}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical > .btn-group:before,.btn-group-vertical > .btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table;}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical > .btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}@-ms-viewport{width:device-width;}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important;}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important;}@media (max-width:767px){.visible-xs{display:block !important;}table.visible-xs{display:table !important;}tr.visible-xs{display:table-row !important;}th.visible-xs,td.visible-xs{display:table-cell !important;}}@media (max-width:767px){.visible-xs-block{display:block !important;}}@media (max-width:767px){.visible-xs-inline{display:inline !important;}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important;}table.visible-sm{display:table !important;}tr.visible-sm{display:table-row !important;}th.visible-sm,td.visible-sm{display:table-cell !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important;}table.visible-md{display:table !important;}tr.visible-md{display:table-row !important;}th.visible-md,td.visible-md{display:table-cell !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important;}}@media (min-width:1200px){.visible-lg{display:block !important;}table.visible-lg{display:table !important;}tr.visible-lg{display:table-row !important;}th.visible-lg,td.visible-lg{display:table-cell !important;}}@media (min-width:1200px){.visible-lg-block{display:block !important;}}@media (min-width:1200px){.visible-lg-inline{display:inline !important;}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important;}}@media (max-width:767px){.hidden-xs{display:none !important;}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important;}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important;}}@media (min-width:1200px){.hidden-lg{display:none !important;}}.visible-print{display:none !important;}@media print{.visible-print{display:block !important;}table.visible-print{display:table !important;}tr.visible-print{display:table-row !important;}th.visible-print,td.visible-print{display:table-cell !important;}}.visible-print-block{display:none !important;}@media print{.visible-print-block{display:block !important;}}.visible-print-inline{display:none !important;}@media print{.visible-print-inline{display:inline !important;}}.visible-print-inline-block{display:none !important;}@media print{.visible-print-inline-block{display:inline-block !important;}}@media print{.hidden-print{display:none !important;}}/*! * AdminLTE v2.3.7 * Author:Almsaeed Studio * Website:Almsaeed Studio <http://almsaeedstudio.com> * License:Open source - MIT * Please visit http://opensource.org/licenses/MIT for more information !*/ html,body{min-height:100%;}.layout-boxed html,.layout-boxed body{height:100%;}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto;}.wrapper{min-height:100%;position:relative;overflow:hidden;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative;}.layout-boxed{background:url(../img/boxed-bg.jpg) repeat fixed;}.content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,margin 0.3s ease-in-out;transition:transform 0.3s ease-in-out,margin 0.3s ease-in-out;margin-left:230px;z-index:820;}.layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0;}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0;}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0;}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px,0);-ms-transform:translate(230px,0);-o-transform:translate(230px,0);transform:translate(230px,0);}}.content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800;}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de;}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed;}.fixed .main-header{top:0;right:0;left:0;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px;}}.fixed.layout-boxed .wrapper{max-width:100%;}body.hold-transition .content-wrapper,body.hold-transition .right-side,body.hold-transition .main-footer,body.hold-transition .main-sidebar,body.hold-transition .left-side,body.hold-transition .main-header .navbar,body.hold-transition .main-header .logo{-webkit-transition:none;-o-transition:none;transition:none;}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif;}a{color:#3c8dbc;}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2;}.page-header{margin:10px 0 20px 0;font-size:22px;}.page-header > small{color:#666;display:block;margin-top:5px;}.main-header{position:relative;max-height:100px;z-index:1030;}.main-header .navbar{-webkit-transition:margin-left 0.3s ease-in-out;-o-transition:margin-left 0.3s ease-in-out;transition:margin-left 0.3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0;}.layout-top-nav .main-header .navbar{margin-left:0;}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent;}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9);}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1;}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc;}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc;}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right;}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent;}}@media (max-width:767px){.main-header .navbar-right{float:none;}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px;}.main-header .navbar-right > li{color:inherit;border:0;}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:16.5px 15px;font-family:fontAwesome;}.main-header .sidebar-toggle:before{content:"\f0c9";}.main-header .sidebar-toggle:hover{color:#fff;}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent;}.main-header .sidebar-toggle .icon-bar{display:none;}.main-header .navbar .nav > li.user > a > .fa,.main-header .navbar .nav > li.user > a > .glyphicon,.main-header .navbar .nav > li.user > a > .ion{margin-right:5px;}.main-header .navbar .nav > li > a > .label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9;}.main-header .logo{-webkit-transition:width 0.3s ease-in-out;-o-transition:width 0.3s ease-in-out;transition:width 0.3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden;}.main-header .logo .logo-lg{display:block;}.main-header .logo .logo-mini{display:none;}.main-header .navbar-brand{color:#fff;}.content-header{position:relative;padding:15px 15px 0 15px;}.content-header > h1{margin:0;font-size:24px;}.content-header > h1 > small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300;}.content-header > .breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px;}.content-header > .breadcrumb > li > a{color:#444;text-decoration:none;display:inline-block;}.content-header > .breadcrumb > li > a > .fa,.content-header > .breadcrumb > li > a > .glyphicon,.content-header > .breadcrumb > li > a > .ion{margin-right:5px;}.content-header > .breadcrumb > li + li:before{content:'>\00a0';}@media (max-width:991px){.content-header > .breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px;}.content-header > .breadcrumb li:before{color:#97a0b3;}}.navbar-toggle{color:#fff;border:0;margin:0;padding:16.5px 15px;}@media (max-width:991px){.navbar-custom-menu .navbar-nav > li{float:left;}.navbar-custom-menu .navbar-nav{margin:0;float:left;}.navbar-custom-menu .navbar-nav > li > a{padding-top:15px;padding-bottom:15px;line-height:20px;}}@media (max-width:767px){.main-header{position:relative;}.main-header .logo,.main-header .navbar{width:100%;float:none;}.main-header .navbar{margin:0;}.main-header .navbar-custom-menu{float:right;}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important;}.navbar-collapse.pull-left + .navbar-custom-menu{display:block;position:absolute;top:0;right:40px;}}.main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform 0.3s ease-in-out,width 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,width 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,width 0.3s ease-in-out;transition:transform 0.3s ease-in-out,width 0.3s ease-in-out;}@media (max-width:767px){.main-sidebar,.left-side{padding-top:100px;}}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}}.sidebar{padding-bottom:10px;}.sidebar-form input:focus{border-color:transparent;}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel > .image > img{width:100%;max-width:45px;height:auto;}.user-panel > .info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px;}.user-panel > .info > p{font-weight:600;margin-bottom:9px;}.user-panel > .info > a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px;}.user-panel > .info > a > .fa,.user-panel > .info > a > .ion,.user-panel > .info > a > .glyphicon{margin-right:3px;}.sidebar-menu{list-style:none;margin:0;padding:0;}.sidebar-menu > li{position:relative;margin:0;padding:0;}.sidebar-menu > li > a{padding:12px 5px 12px 15px;display:block;}.sidebar-menu > li > a > .fa,.sidebar-menu > li > a > .glyphicon,.sidebar-menu > li > a > .ion{width:20px;}.sidebar-menu > li .label,.sidebar-menu > li .badge{margin-right:5px;}.sidebar-menu > li .badge{margin-top:3px;}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px;}.sidebar-menu li > a > .fa-angle-left,.sidebar-menu li > a > .pull-right-container > .fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;}.sidebar-menu li.active > a > .fa-angle-left,.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg);}.sidebar-menu li.active > .treeview-menu{display:block;}.sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px;}.sidebar-menu .treeview-menu .treeview-menu{padding-left:20px;}.sidebar-menu .treeview-menu > li{margin:0;}.sidebar-menu .treeview-menu > li > a{padding:12px 5px 12px 15px;display:block;font-size:12px;}.sidebar-menu .treeview-menu > li > a > .fa,.sidebar-menu .treeview-menu > li > a > .glyphicon,.sidebar-menu .treeview-menu > li > a > .ion{width:20px;}.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down,.sidebar-menu .treeview-menu > li > a > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .fa-angle-down{width:auto;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840;}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);width:50px !important;z-index:850;}.sidebar-mini.sidebar-collapse .sidebar-menu > li{position:relative;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a{margin-right:0;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span{border-top-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span{border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{display:block !important;position:absolute;width:180px;left:50px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{float:right;width:auto!important;left:200px!important;top:10px!important;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type){display:none;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:44px;margin-left:0;}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0);}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg{display:none;}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px;}}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu > li.header{white-space:nowrap;overflow:hidden;}.sidebar-menu:hover{overflow:visible;}.sidebar-form,.sidebar-menu > li.header{overflow:hidden;text-overflow:clip;}.sidebar-menu li > a{position:relative;}.sidebar-menu li > a > .pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px;}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0;}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right 0.3s ease-in-out;-o-transition:right 0.3s ease-in-out;transition:right 0.3s ease-in-out;}.control-sidebar{position:absolute;padding-top:50px;z-index:1010;}@media (max-width:768px){.control-sidebar{padding-top:100px;}}.control-sidebar > .tab-content{padding:10px 15px;}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open + .control-sidebar-bg{right:0;}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0;}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px;}}.nav-tabs.control-sidebar-tabs > li:first-of-type > a,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus{border-left-width:0;}.nav-tabs.control-sidebar-tabs > li > a{border-radius:0;}.nav-tabs.control-sidebar-tabs > li > a,.nav-tabs.control-sidebar-tabs > li > a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent;}.nav-tabs.control-sidebar-tabs > li > a .icon{font-size:16px;}.nav-tabs.control-sidebar-tabs > li.active > a,.nav-tabs.control-sidebar-tabs > li.active > a:hover,.nav-tabs.control-sidebar-tabs > li.active > a:focus,.nav-tabs.control-sidebar-tabs > li.active > a:active{border-top:none;border-right:none;border-bottom:none;}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table;}.nav-tabs.control-sidebar-tabs > li{display:table-cell;}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px;}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px;}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px;}.control-sidebar-menu > li > a{display:block;padding:10px 15px;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a > .control-sidebar-subheading{margin-top:0;}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px;}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px;}.control-sidebar-menu .menu-info > .control-sidebar-subheading{margin:0;}.control-sidebar-menu .menu-info > p{margin:0;font-size:11px;}.control-sidebar-menu .progress{margin:0;}.control-sidebar-dark{color:#b8c7ce;}.control-sidebar-dark,.control-sidebar-dark + .control-sidebar-bg{background:#222d32;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a{background:#181f23;color:#b8c7ce;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active{background:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover{color:#fff;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#222d32;color:#fff;}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff;}.control-sidebar-dark .control-sidebar-menu > li > a:hover{background:#1e282c;}.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p{color:#b8c7ce;}.control-sidebar-light{color:#5e5e5e;}.control-sidebar-light,.control-sidebar-light + .control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a{background:#e8ecf4;color:#444;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active{background:#eff1f7;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#f9fafc;color:#111;}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111;}.control-sidebar-light .control-sidebar-menu{margin-left:-14px;}.control-sidebar-light .control-sidebar-menu > li > a:hover{background:#f4f4f5;}.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p{color:#5e5e5e;}.dropdown-menu{box-shadow:none;border-color:#eee;}.dropdown-menu > li > a{}.dropdown-menu > li > a > .glyphicon,.dropdown-menu > li > a > .fa,.dropdown-menu > li > a > .ion{margin-right:10px;}.dropdown-menu > li > a:hover{background-color:#e1e3e9;color:#333;}.dropdown-menu > .divider{background-color:#eee;}.navbar-nav > .notifications-menu > .dropdown-menu,.navbar-nav > .messages-menu > .dropdown-menu,.navbar-nav > .tasks-menu > .dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%;}.navbar-nav > .notifications-menu > .dropdown-menu > li,.navbar-nav > .messages-menu > .dropdown-menu > li,.navbar-nav > .tasks-menu > .dropdown-menu > li{position:relative;}.navbar-nav > .notifications-menu > .dropdown-menu > li.header,.navbar-nav > .messages-menu > .dropdown-menu > li.header,.navbar-nav > .tasks-menu > .dropdown-menu > li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px;}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center;}@media (max-width:991px){.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{background:#fff !important;color:#444 !important;}}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover{text-decoration:none;font-weight:normal;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,.navbar-nav > .messages-menu > .dropdown-menu > li .menu,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover{background:#f4f4f4;text-decoration:none;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion{width:20px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a{margin:0;padding:10px 10px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img{margin:auto 10px auto auto;width:40px;height:40px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small{color:#999999;font-size:10px;position:absolute;top:0;right:0;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p{margin:0 0 0 45px;font-size:12px;color:#888888;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{padding:10px;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress{padding:0;margin:0;}.navbar-nav > .user-menu > .dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width: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;border-color:transparent;border-color:rgba(255,255,255,0.2);}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);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{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body a{color:#444 !important;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-body a{background:#fff !important;color:#444 !important;}}.navbar-nav > .user-menu > .dropdown-menu > .user-footer{background-color:#f9f9f9;padding:10px;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default{color:#666666;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover{background-color:#f9f9f9;}}.navbar-nav > .user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px;}@media (max-width:767px){.navbar-nav > .user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px;}}.open:not(.dropup) > .animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX 0.7s both;-o-animation:flipInX 0.7s both;animation:flipInX 0.7s both;}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1,0,0,90deg);transition-timing-function:ease-in;opacity:0;}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);transition-timing-function:ease-in;}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{transform:perspective(400px);}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;opacity:0;}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{-webkit-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:991px){.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;}}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:3px 0 3px 3px;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;border-radius:3px 0 3px 3px;}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de;-webkit-appearance:none;-moz-appearance:none;appearance:none;}.form-control:focus{border-color:#3c8dbc;box-shadow:none;}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1;}.form-control .btn{border-radius:0;}select.form-control{-webkit-appearance:none;-webkit-border-radius:0px;background-position:right 50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);}.form-group.has-success label{color:#18bc9c;}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#18bc9c;box-shadow:none;}.form-group.has-success .help-block{color:#18bc9c;}.form-group.has-warning label{color:#f39c12;}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none;}.form-group.has-warning .help-block{color:#f39c12;}.form-group.has-error label{color:#e74c3c;}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#e74c3c;box-shadow:none;}.form-group.has-error .help-block{color:#e74c3c;}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff;}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0;}.icheck > label{padding-left:0;}.form-control-feedback.fa{line-height:31px;}.input-lg + .form-control-feedback.fa,.input-group-lg + .form-control-feedback.fa,.form-group-lg .form-control + .form-control-feedback.fa{line-height:42px;}.input-sm + .form-control-feedback.fa,.input-group-sm + .form-control-feedback.fa,.form-group-sm .form-control + .form-control-feedback.fa{line-height:28px;}.progress,.progress > .progress-bar{-webkit-box-shadow:none;box-shadow:none;}.progress,.progress > .progress-bar,.progress .progress-bar,.progress > .progress-bar .progress-bar{border-radius:1px;}.progress.sm,.progress-sm{height:10px;}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px;}.progress.xs,.progress-xs{height:7px;}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px;}.progress.xxs,.progress-xxs{height:3px;}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px;}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px;}.progress.vertical > .progress-bar{width:100%;position:absolute;bottom:0;}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px;}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px;}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px;}.progress-group .progress-text{font-weight:600;}.progress-group .progress-number{float:right;}.table tr > td .progress{margin:0;}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc;}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-green,.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-aqua,.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-red,.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.small-box > .inner{padding:10px;}.small-box > .small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none;}.small-box > .small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15);}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0;}.small-box p{font-size:15px;}.small-box p > small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px;}.small-box h3,.small-box p{z-index:5;}.small-box .icon{-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:all 0.3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15);}.small-box:hover{text-decoration:none;color:#f9f9f9;}.small-box:hover .icon{font-size:95px;}@media (max-width:767px){.small-box{text-align:center;}.small-box .icon{display:none;}.small-box p{font-size:12px;}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.box.box-primary{border-top-color:#3c8dbc;}.box.box-info{border-top-color:#3498db;}.box.box-danger{border-top-color:#e74c3c;}.box.box-warning{border-top-color:#f39c12;}.box.box-success{border-top-color:#18bc9c;}.box.box-default{border-top-color:#d2d6de;}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none;}.box .nav-stacked > li{border-bottom:1px solid #f4f4f4;margin:0;}.box .nav-stacked > li:last-of-type{border-bottom:none;}.box.height-control .box-body{max-height:300px;overflow:auto;}.box .border-right{border-right:1px solid #f4f4f4;}.box .border-left{border-left:1px solid #f4f4f4;}.box.box-solid{border-top:0;}.box.box-solid > .box-header .btn.btn-default{background:transparent;}.box.box-solid > .box-header .btn:hover,.box.box-solid > .box-header a:hover{background:rgba(0,0,0,0.1);}.box.box-solid.box-default{border:1px solid #d2d6de;}.box.box-solid.box-default > .box-header{color:#444;background:#d2d6de;background-color:#d2d6de;}.box.box-solid.box-default > .box-header a,.box.box-solid.box-default > .box-header .btn{color:#444;}.box.box-solid.box-primary{border:1px solid #3c8dbc;}.box.box-solid.box-primary > .box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc;}.box.box-solid.box-primary > .box-header a,.box.box-solid.box-primary > .box-header .btn{color:#fff;}.box.box-solid.box-info{border:1px solid #3498db;}.box.box-solid.box-info > .box-header{color:#fff;background:#3498db;background-color:#3498db;}.box.box-solid.box-info > .box-header a,.box.box-solid.box-info > .box-header .btn{color:#fff;}.box.box-solid.box-danger{border:1px solid #e74c3c;}.box.box-solid.box-danger > .box-header{color:#fff;background:#e74c3c;background-color:#e74c3c;}.box.box-solid.box-danger > .box-header a,.box.box-solid.box-danger > .box-header .btn{color:#fff;}.box.box-solid.box-warning{border:1px solid #f39c12;}.box.box-solid.box-warning > .box-header{color:#fff;background:#f39c12;background-color:#f39c12;}.box.box-solid.box-warning > .box-header a,.box.box-solid.box-warning > .box-header .btn{color:#fff;}.box.box-solid.box-success{border:1px solid #18bc9c;}.box.box-solid.box-success > .box-header{color:#fff;background:#18bc9c;background-color:#18bc9c;}.box.box-solid.box-success > .box-header a,.box.box-solid.box-success > .box-header .btn{color:#fff;}.box.box-solid > .box-header > .box-tools .btn{border:0;box-shadow:none;}.box.box-solid[class*='bg'] > .box-header{color:#fff;}.box .box-group > .box{margin-bottom:5px;}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em;}.box > .overlay,.overlay-wrapper > .overlay,.box > .loading-img,.overlay-wrapper > .loading-img{position:absolute;top:0;left:0;width:100%;height:100%;}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px;}.box .overlay > .fa,.overlay-wrapper .overlay > .fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px;}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5);}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header{color:#444;display:block;padding:10px;position:relative;}.box-header.with-border{border-bottom:1px solid #f4f4f4;}.collapsed-box .box-header.with-border{border-bottom:none;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion{margin-right:5px;}.box-header > .box-tools{position:absolute;right:10px;top:5px;}.box-header > .box-tools [data-toggle="tooltip"]{position:relative;}.box-header > .box-tools.pull-right .dropdown-menu{right:0;left:auto;}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3;}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84;}.btn-box-tool.btn:active{box-shadow:none;}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px;}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px;}.box-body > .table{margin-bottom:0;}.box-body .fc{margin-top:5px;}.box-body .full-width-chart{margin:-19px;}.box-body.no-padding .full-width-chart{margin:-9px;}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px;}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff;}.chart-legend{margin:10px 0;}@media (max-width:991px){.chart-legend > li{float:left;margin-right:10px;}}.box-comments{background:#f7f7f7;}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:last-of-type{border-bottom:0;}.box-comments .box-comment:first-of-type{padding-top:0;}.box-comments .box-comment img{float:left;}.box-comments .comment-text{margin-left:40px;color:#555;}.box-comments .username{color:#444;display:block;font-weight:600;}.box-comments .text-muted{font-weight:400;font-size:12px;}.todo-list{margin:0;padding:0;list-style:none;overflow:auto;}.todo-list > li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444;}.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;margin-left:5px;font-weight:600;}.todo-list > li .label{margin-left:10px;font-size:9px;}.todo-list > li .tools{display:none;float:right;color:#e74c3c;}.todo-list > li .tools > .fa,.todo-list > li .tools > .glyphicon,.todo-list > li .tools > .ion{margin-right:5px;cursor:pointer;}.todo-list > li:hover .tools{display:inline-block;}.todo-list > li.done{color:#999;}.todo-list > li.done .text{text-decoration:line-through;font-weight:500;}.todo-list > li.done .label{background:#d2d6de !important;}.todo-list .danger{border-left-color:#e74c3c;}.todo-list .warning{border-left-color:#f39c12;}.todo-list .info{border-left-color:#3498db;}.todo-list .success{border-left-color:#18bc9c;}.todo-list .primary{border-left-color:#3c8dbc;}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px;}.chat{padding:5px 20px 5px 10px;}.chat .item{margin-bottom:10px;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item > img{width:40px;height:40px;border:2px solid transparent;border-radius:50%;}.chat .item > .online{border:2px solid #18bc9c;}.chat .item > .offline{border:2px solid #e74c3c;}.chat .item > .message{margin-left:55px;margin-top:-40px;}.chat .item > .message > .name{display:block;font-weight:600;}.chat .item > .attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px;}.chat .item > .attachment > h4{margin:0 0 5px 0;font-weight:600;font-size:14px;}.chat .item > .attachment > p,.chat .item > .attachment > .filename{font-weight:600;font-size:13px;font-style:italic;margin:0;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.box-input{max-width:200px;}.modal .panel-body{color:#444;}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px;}.info-box small{font-size:14px;}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px;}.info-box .progress,.info-box .progress .progress-bar{border-radius:0;}.info-box .progress .progress-bar{background:#fff;}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2);}.info-box-icon > img{max-width:100%;}.info-box-content{padding:5px 10px;margin-left:90px;}.info-box-number{display:block;font-weight:bold;font-size:18px;}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.info-box-text{text-transform:uppercase;}.info-box-more{display:block;}.progress-description{margin:0;}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none;}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px;}.timeline > li{position:relative;margin-right:10px;margin-bottom:15px;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li > .timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative;}.timeline > li > .timeline-item > .time{color:#999;float:right;padding:10px;font-size:12px;}.timeline > li > .timeline-item > .timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1;}.timeline > li > .timeline-item > .timeline-header > a{font-weight:600;}.timeline > li > .timeline-item > .timeline-body,.timeline > li > .timeline-item > .timeline-footer{padding:10px;}.timeline > li > .fa,.timeline > li > .glyphicon,.timeline > li > .ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0;}.timeline > .time-label > span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px;}.timeline-inverse > li > .timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;}.timeline-inverse > li > .timeline-item > .timeline-header{border-bottom-color:#ddd;}.btn{-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent;}.btn.uppercase{text-transform:uppercase;}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px;}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn:focus{outline:none;}.btn.btn-file{position:relative;overflow:hidden;}.btn.btn-file > input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block;}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd;}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7;}.btn-outline{border:1px solid #fff;background:transparent;color:#fff;}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7);}.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2);}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px;}.btn-app > .fa,.btn-app > .glyphicon,.btn-app > .ion{font-size:20px;display:block;}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa;}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-app > .badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400;}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee;}.callout a{color:#fff;text-decoration:underline;}.callout a:hover{color:#eee;}.callout h4{margin-top:0;font-weight:600;}.callout p:last-child{margin-bottom:0;}.callout code,.callout .highlight{background-color:#fff;}.callout.callout-danger{border-color:#d62c1a;}.callout.callout-warning{border-color:#c87f0a;}.callout.callout-info{border-color:#217dbb;}.callout.callout-success{border-color:#128f76;}.alert{border-radius:3px;}.alert h4{font-weight:600;}.alert .icon{margin-right:10px;}.alert .close{color:#000;opacity:0.2;filter:alpha(opacity=20);}.alert .close:hover{opacity:0.5;filter:alpha(opacity=50);}.alert a{color:#fff;text-decoration:underline;}.alert-success{border-color:#15a589;}.alert-danger,.alert-error{border-color:#e43725;}.alert-warning{border-color:#e08e0b;}.alert-info{border-color:#258cd1;}.nav > li > a:hover,.nav > li > a:active,.nav > li > a:focus{color:#444;background:#f7f7f7;}.nav-pills > li > a{border-radius:0;border-top:3px solid transparent;color:#444;}.nav-pills > li > a > .fa,.nav-pills > li > a > .glyphicon,.nav-pills > li > a > .ion{margin-right:5px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{border-top-color:#3c8dbc;}.nav-pills > li.active > a{font-weight:600;}.nav-stacked > li > a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444;}.nav-stacked > li.active > a,.nav-stacked > li.active > a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc;}.nav-stacked > li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase;}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;}.nav-tabs-custom > .nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px;}.nav-tabs-custom > .nav-tabs > li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px;}.nav-tabs-custom > .nav-tabs > li > a{color:#444;border-radius:0;}.nav-tabs-custom > .nav-tabs > li > a.text-muted{color:#999;}.nav-tabs-custom > .nav-tabs > li > a,.nav-tabs-custom > .nav-tabs > li > a:hover{background:transparent;margin:0;}.nav-tabs-custom > .nav-tabs > li > a:hover{color:#999;}.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active{border-color:transparent;}.nav-tabs-custom > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom > .nav-tabs > li.active > a,.nav-tabs-custom > .nav-tabs > li.active:hover > a{background-color:#fff;color:#444;}.nav-tabs-custom > .nav-tabs > li.active > a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4;}.nav-tabs-custom > .nav-tabs > li:first-of-type{margin-left:0;}.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a{border-left-color:transparent;}.nav-tabs-custom > .nav-tabs.pull-right{float:none !important;}.nav-tabs-custom > .nav-tabs.pull-right > li{float:right;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type{margin-right:0;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a{border-left-width:1px;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a{border-left-color:#f4f4f4;border-right-color:transparent;}.nav-tabs-custom > .nav-tabs > li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444;}.nav-tabs-custom > .nav-tabs > li.header > .fa,.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,.nav-tabs-custom > .nav-tabs > li.header > .ion{margin-right:5px;}.nav-tabs-custom > .tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.nav-tabs-custom .dropdown.open > a:active,.nav-tabs-custom .dropdown.open > a:focus{background:transparent;color:#999;}.nav-tabs-custom.tab-primary > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom.tab-info > .nav-tabs > li.active{border-top-color:#3498db;}.nav-tabs-custom.tab-danger > .nav-tabs > li.active{border-top-color:#e74c3c;}.nav-tabs-custom.tab-warning > .nav-tabs > li.active{border-top-color:#f39c12;}.nav-tabs-custom.tab-success > .nav-tabs > li.active{border-top-color:#18bc9c;}.nav-tabs-custom.tab-default > .nav-tabs > li.active{border-top-color:#d2d6de;}.pagination > li > a{background:#fafafa;color:#666;}.pagination.pagination-flat > li > a{border-radius:0 !important;}.products-list{list-style:none;margin:0;padding:0;}.products-list > .item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list .product-img{float:left;}.products-list .product-img img{width:50px;height:50px;}.products-list .product-info{margin-left:60px;}.products-list .product-title{font-weight:600;}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.product-list-in-box > .item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4;}.product-list-in-box > .item:last-of-type{border-bottom-width:0;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{border-top:1px solid #f4f4f4;}.table > thead > tr > th{border-bottom:2px solid #f4f4f4;}.table tr td .progress{margin-top:5px;}.table-bordered{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.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.align th{text-align:left;}.table.align td{text-align:right;}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0;}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-messages{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);padding:10px;height:250px;overflow:auto;}.direct-chat-msg,.direct-chat-text{display:block;}.direct-chat-msg{margin-bottom:10px;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform 0.5s ease-in-out;-moz-transition:-moz-transform 0.5s ease-in-out;-o-transition:-o-transform 0.5s ease-in-out;transition:transform 0.5s ease-in-out;}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444;}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none;}.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-right:50px;margin-left:0;}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de;}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px;}.right .direct-chat-img{float:right;}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px;}.direct-chat-name{font-weight:600;}.direct-chat-timestamp{color:#999;}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-contacts{-webkit-transform:translate(101%,0);-ms-transform:translate(101%,0);-o-transform:translate(101%,0);transform:translate(101%,0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto;}.contacts-list > li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:last-of-type{border-bottom:none;}.contacts-list-img{border-radius:50%;width:40px;float:left;}.contacts-list-info{margin-left:45px;color:#fff;}.contacts-list-name,.contacts-list-status{display:block;}.contacts-list-name{font-weight:600;}.contacts-list-status{font-size:12px;}.contacts-list-date{color:#aaa;font-weight:normal;}.contacts-list-msg{color:#999;}.direct-chat-danger .right > .direct-chat-text{background:#e74c3c;border-color:#e74c3c;color:#fff;}.direct-chat-danger .right > .direct-chat-text:after,.direct-chat-danger .right > .direct-chat-text:before{border-left-color:#e74c3c;}.direct-chat-primary .right > .direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff;}.direct-chat-primary .right > .direct-chat-text:after,.direct-chat-primary .right > .direct-chat-text:before{border-left-color:#3c8dbc;}.direct-chat-warning .right > .direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff;}.direct-chat-warning .right > .direct-chat-text:after,.direct-chat-warning .right > .direct-chat-text:before{border-left-color:#f39c12;}.direct-chat-info .right > .direct-chat-text{background:#3498db;border-color:#3498db;color:#fff;}.direct-chat-info .right > .direct-chat-text:after,.direct-chat-info .right > .direct-chat-text:before{border-left-color:#3498db;}.direct-chat-success .right > .direct-chat-text{background:#18bc9c;border-color:#18bc9c;color:#fff;}.direct-chat-success .right > .direct-chat-text:after,.direct-chat-success .right > .direct-chat-text:before{border-left-color:#18bc9c;}.users-list > li{width:25%;float:left;padding:10px;text-align:center;}.users-list > li img{border-radius:50%;max-width:100%;height:auto;}.users-list > li > a:hover,.users-list > li > a:hover .users-list-name{color:#999;}.users-list-name,.users-list-date{display:block;}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.users-list-date{color:#999;font-size:12px;}.carousel-control.left,.carousel-control.right{background-image:none;}.carousel-control > .fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px;}.modal{background:rgba(0,0,0,0.3);}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0;}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);}}.modal-header{border-bottom-color:#f4f4f4;}.modal-footer{border-top-color:#f4f4f4;}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095;}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a;}.modal-info .modal-header,.modal-info .modal-footer{border-color:#217dbb;}.modal-success .modal-header,.modal-success .modal-footer{border-color:#128f76;}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#d62c1a;}.box-widget{border:none;position:relative;}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2);}.widget-user .widget-user-desc{margin-top:0;}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px;}.widget-user .widget-user-image > img{width:90px;height:auto;border:3px solid #fff;}.widget-user .box-footer{padding-top:30px;}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300;}.widget-user-2 .widget-user-desc{margin-top:0;}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px;}.widget-user-2 .widget-user-image > img{width:65px;height:auto;float:left;}.close,.mailbox-attachment-close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.clearfix:before,.clearfix:after,.content:before,.content:after{content:" ";display:table;}.clearfix:after,.content:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}.mailbox-messages > .table{margin:0;}.mailbox-controls{padding:5px;}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4;}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px;}.mailbox-read-info h3{font-size:20px;margin:0;}.mailbox-read-info h5{margin:0;padding:5px 0 0 0;}.mailbox-read-time{color:#999;font-size:13px;}.mailbox-read-message{padding:10px;}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px;}.mailbox-attachment-name{font-weight:bold;color:#666;}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block;}.mailbox-attachment-info{padding:10px;background:#f4f4f4;}.mailbox-attachment-size{color:#999;font-size:12px;}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px;}.mailbox-attachment-icon.has-img{padding:0;}.mailbox-attachment-icon.has-img > img{max-width:100%;height:auto;}.lockscreen{background:#d2d6de;}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.lockscreen-logo a{color:#444;}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px;}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10;}.lockscreen-image > img{border-radius:50%;width:70px;height: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:35px;text-align:center;margin-bottom:25px;font-weight:300;}.login-logo a,.register-logo a{color:#444;}.login-page,.register-page{background:#d2d6de;}.login-box,.register-box{width:360px;margin:7% auto;}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px;}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666;}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777;}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px;}.social-auth-links{margin:10px 0;}.error-page{width:600px;margin:20px auto 0 auto;}@media (max-width:991px){.error-page{width:100%;}}.error-page > .headline{float:left;font-size:100px;font-weight:300;}@media (max-width:991px){.error-page > .headline{float:none;text-align:center;}}.error-page > .error-content{margin-left:190px;display:block;}@media (max-width:991px){.error-page > .error-content{margin-left:0;}}.error-page > .error-content > h3{font-weight:300;font-size:25px;}@media (max-width:991px){.error-page > .error-content > h3{text-align:center;}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px;}.invoice-title{margin-top:0;}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de;}.profile-username{font-size:21px;margin-top:5px;}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666;}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0;}.post .user-block{margin-bottom:15px;}/* * Social Buttons for Bootstrap * * Copyright 2013-2015 Panayiotis Lipiridis * Licensed under the MIT License * * https://github.com/lipis/bootstrap-social */ .btn-social{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.btn-social > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social.btn-lg{padding-left:57px;}.btn-social.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social.btn-sm{padding-left:36px;}.btn-social.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social.btn-xs{padding-left:29px;}.btn-social.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:31px;width:31px;padding:0;}.btn-social-icon > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social-icon.btn-lg{padding-left:57px;}.btn-social-icon.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social-icon.btn-sm{padding-left:36px;}.btn-social-icon.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social-icon.btn-xs{padding-left:29px;}.btn-social-icon.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon > :first-child{border:none;text-align:center;width:100%;}.btn-social-icon.btn-lg{height:41px;width:41px;padding-left:0;padding-right:0;}.btn-social-icon.btn-sm{height:28px;width:28px;padding-left:0;padding-right:0;}.btn-social-icon.btn-xs{height:21px;width:21px;padding-left:0;padding-right:0;}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active:hover,.btn-adn.active:hover,.open > .dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open > .dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open > .dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{background-image:none;}.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn .badge{color:#d87a68;background-color:#fff;}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open > .dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open > .dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open > .dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{background-image:none;}.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket .badge{color:#205081;background-color:#fff;}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open > .dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open > .dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open > .dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{background-image:none;}.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox .badge{color:#1087dd;background-color:#fff;}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active:hover,.btn-facebook.active:hover,.open > .dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open > .dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open > .dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{background-image:none;}.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook .badge{color:#3b5998;background-color:#fff;}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active:hover,.btn-flickr.active:hover,.open > .dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open > .dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open > .dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{background-image:none;}.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr .badge{color:#ff0084;background-color:#fff;}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open > .dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open > .dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open > .dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{background-image:none;}.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare .badge{color:#f94877;background-color:#fff;}.btn-github{color:#fff;background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active:hover,.btn-github.active:hover,.open > .dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open > .dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open > .dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{background-image:none;}.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github .badge{color:#444444;background-color:#fff;}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active:hover,.btn-google.active:hover,.open > .dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open > .dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open > .dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{background-image:none;}.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google .badge{color:#dd4b39;background-color:#fff;}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active:hover,.btn-instagram.active:hover,.open > .dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open > .dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open > .dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{background-image:none;}.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram .badge{color:#3f729b;background-color:#fff;}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open > .dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open > .dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open > .dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{background-image:none;}.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin .badge{color:#007bb6;background-color:#fff;}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open > .dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open > .dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open > .dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{background-image:none;}.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft .badge{color:#2672ec;background-color:#fff;}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active:hover,.btn-openid.active:hover,.open > .dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open > .dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open > .dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{background-image:none;}.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid .badge{color:#f7931e;background-color:#fff;}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open > .dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open > .dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open > .dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{background-image:none;}.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest .badge{color:#cb2027;background-color:#fff;}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active:hover,.btn-reddit.active:hover,.open > .dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open > .dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open > .dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{background-image:none;}.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit .badge{color:#eff7ff;background-color:#000;}.btn-soundcloud{color:#fff;background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:hover{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open > .dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open > .dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open > .dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{background-image:none;}.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud .badge{color:#ff5500;background-color:#fff;}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open > .dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open > .dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open > .dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{background-image:none;}.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr .badge{color:#2c4762;background-color:#fff;}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active:hover,.btn-twitter.active:hover,.open > .dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open > .dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open > .dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{background-image:none;}.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter .badge{color:#55acee;background-color:#fff;}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open > .dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open > .dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open > .dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{background-image:none;}.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff;}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active:hover,.btn-vk.active:hover,.open > .dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open > .dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open > .dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{background-image:none;}.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk .badge{color:#587ea3;background-color:#fff;}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open > .dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open > .dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open > .dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{background-image:none;}.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo .badge{color:#720e9e;background-color:#fff;}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd;}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9;}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px;}.fc-header-right{padding-right:10px;}.fc-header-left{padding-left:10px;}.fc-widget-header{background:#fafafa;}.fc-grid{width:100%;border:0;}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0;}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0;}.fc-toolbar{padding:10px;margin:0;}.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;margin-right:5px;line-height:30px;}.fc-color-picker > li .fa{-webkit-transition:-webkit-transform linear 0.3s;-moz-transition:-moz-transform linear 0.3s;-o-transition:-o-transform linear 0.3s;transition:transform linear 0.3s;}.fc-color-picker > li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg);}#add-new-event{-webkit-transition:all linear 0.3s;-o-transition:all linear 0.3s;transition:all linear 0.3s;}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move;}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2);}.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none;}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px;}.select2-container--default.select2-container--open{border-color:#3c8dbc;}.select2-dropdown{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white;}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0;}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de;}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc;}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444;}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc;}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7);}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff;}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px;}.pad{padding:10px;}.margin{margin:10px;}.margin-bottom{margin-bottom:20px;}.margin-bottom-none{margin-bottom:0;}.margin-r-5{margin-right:5px;}.inline{display:inline;}.description-block{display:block;margin:10px 0;text-align:center;}.description-block.margin-bottom{margin-bottom:25px;}.description-block > .description-header{margin:0;padding:0;font-weight:600;font-size:16px;}.description-block > .description-text{text-transform:uppercase;}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important;}.bg-gray{color:#000;background-color:#d2d6de !important;}.bg-gray-light{background-color:#f7f7f7;}.bg-black{background-color:#111 !important;}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.modal-danger .modal-body{background-color:#e74c3c !important;}.bg-yellow,.callout.callout-warning,.alert-warning,.modal-warning .modal-body{background-color:#f39c12 !important;}.bg-aqua,.callout.callout-info,.alert-info,.modal-info .modal-body{background-color:#3498db !important;}.bg-blue{background-color:#0073b7 !important;}.bg-light-blue,.modal-primary .modal-body{background-color:#3c8dbc !important;}.bg-green,.callout.callout-success,.alert-success,.modal-success .modal-body{background-color:#18bc9c !important;}.bg-navy{background-color:#001F3F !important;}.bg-teal{background-color:#39CCCC !important;}.bg-olive{background-color:#3D9970 !important;}.bg-lime{background-color:#01FF70 !important;}.bg-orange{background-color:#FF851B !important;}.bg-fuchsia{background-color:#F012BE !important;}.bg-purple{background-color:#605ca8 !important;}.bg-maroon{background-color:#D81B60 !important;}.bg-gray-active{color:#000;background-color:#b5bbc8 !important;}.bg-black-active{background-color:#000000 !important;}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#e43321 !important;}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important;}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#2489cc !important;}.bg-blue-active{background-color:#005384 !important;}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important;}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#15a589 !important;}.bg-navy-active{background-color:#001a35 !important;}.bg-teal-active{background-color:#30bbbb !important;}.bg-olive-active{background-color:#368763 !important;}.bg-lime-active{background-color:#00e765 !important;}.bg-orange-active{background-color:#ff7701 !important;}.bg-fuchsia-active{background-color:#db0ead !important;}.bg-purple-active{background-color:#555299 !important;}.bg-maroon-active{background-color:#ca195a !important;}[class^="bg-"].disabled{opacity:0.65;filter:alpha(opacity=65);}.text-red{color:#e74c3c !important;}.text-yellow{color:#f39c12 !important;}.text-aqua{color:#3498db !important;}.text-blue{color:#0073b7 !important;}.text-black{color:#111 !important;}.text-light-blue{color:#3c8dbc !important;}.text-green{color:#18bc9c !important;}.text-gray{color:#d2d6de !important;}.text-navy{color:#001F3F !important;}.text-teal{color:#39CCCC !important;}.text-olive{color:#3D9970 !important;}.text-lime{color:#01FF70 !important;}.text-orange{color:#FF851B !important;}.text-fuchsia{color:#F012BE !important;}.text-purple{color:#605ca8 !important;}.text-maroon{color:#D81B60 !important;}.link-muted{color:#7a869d;}.link-muted:hover,.link-muted:focus{color:#606c84;}.link-black{color:#666;}.link-black:hover,.link-black:focus{color:#999;}.hide{display:none !important;}.no-border{border:0 !important;}.no-padding{padding:0 !important;}.no-margin{margin:0 !important;}.no-shadow{box-shadow:none !important;}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0;}.list-group-unbordered > .list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0;}.flat{border-radius:0 !important;}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700;}.text-sm{font-size:12px;}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important;}.bg-teal-gradient{background:#39CCCC !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#39CCCC),color-stop(1,#7adddd)) !important;background:-ms-linear-gradient(bottom,#39CCCC,#7adddd) !important;background:-moz-linear-gradient(center bottom,#39CCCC 0%,#7adddd 100%) !important;background:-o-linear-gradient(#7adddd,#39CCCC) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd',endColorstr='#39CCCC',GradientType=0) !important;color:#fff;}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3c8dbc),color-stop(1,#67a8ce)) !important;background:-ms-linear-gradient(bottom,#3c8dbc,#67a8ce) !important;background:-moz-linear-gradient(center bottom,#3c8dbc 0%,#67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce,#3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce',endColorstr='#3c8dbc',GradientType=0) !important;color:#fff;}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#0073b7),color-stop(1,#0089db)) !important;background:-ms-linear-gradient(bottom,#0073b7,#0089db) !important;background:-moz-linear-gradient(center bottom,#0073b7 0%,#0089db 100%) !important;background:-o-linear-gradient(#0089db,#0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db',endColorstr='#0073b7',GradientType=0) !important;color:#fff;}.bg-aqua-gradient{background:#3498db !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3498db),color-stop(1,#52a7e0)) !important;background:-ms-linear-gradient(bottom,#3498db,#52a7e0) !important;background:-moz-linear-gradient(center bottom,#3498db 0%,#52a7e0 100%) !important;background:-o-linear-gradient(#52a7e0,#3498db) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#52a7e0',endColorstr='#3498db',GradientType=0) !important;color:#fff;}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#f39c12),color-stop(1,#f7bc60)) !important;background:-ms-linear-gradient(bottom,#f39c12,#f7bc60) !important;background:-moz-linear-gradient(center bottom,#f39c12 0%,#f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60,#f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60',endColorstr='#f39c12',GradientType=0) !important;color:#fff;}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#605ca8),color-stop(1,#9491c4)) !important;background:-ms-linear-gradient(bottom,#605ca8,#9491c4) !important;background:-moz-linear-gradient(center bottom,#605ca8 0%,#9491c4 100%) !important;background:-o-linear-gradient(#9491c4,#605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4',endColorstr='#605ca8',GradientType=0) !important;color:#fff;}.bg-green-gradient{background:#18bc9c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#18bc9c),color-stop(1,#1cdcb6)) !important;background:-ms-linear-gradient(bottom,#18bc9c,#1cdcb6) !important;background:-moz-linear-gradient(center bottom,#18bc9c 0%,#1cdcb6 100%) !important;background:-o-linear-gradient(#1cdcb6,#18bc9c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1cdcb6',endColorstr='#18bc9c',GradientType=0) !important;color:#fff;}.bg-red-gradient{background:#e74c3c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#e74c3c),color-stop(1,#ed7669)) !important;background:-ms-linear-gradient(bottom,#e74c3c,#ed7669) !important;background:-moz-linear-gradient(center bottom,#e74c3c 0%,#ed7669 100%) !important;background:-o-linear-gradient(#ed7669,#e74c3c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed7669',endColorstr='#e74c3c',GradientType=0) !important;color:#fff;}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#111),color-stop(1,#2b2b2b)) !important;background:-ms-linear-gradient(bottom,#111,#2b2b2b) !important;background:-moz-linear-gradient(center bottom,#111 0%,#2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b,#111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b',endColorstr='#111',GradientType=0) !important;color:#fff;}.bg-maroon-gradient{background:#D81B60 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#D81B60),color-stop(1,#e73f7c)) !important;background:-ms-linear-gradient(bottom,#D81B60,#e73f7c) !important;background:-moz-linear-gradient(center bottom,#D81B60 0%,#e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c,#D81B60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c',endColorstr='#D81B60',GradientType=0) !important;color:#fff;}.description-block .description-icon{font-size:16px;}.no-pad-top{padding-top:0;}.position-static{position:static !important;}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666;}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0;}.list-link > a{padding:4px;color:#777;}.list-link > a:hover{color:#222;}.font-light{font-weight:300;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block img{width:40px;height:40px;float:left;}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px;}.user-block .username{font-size:16px;font-weight:600;}.user-block .description{color:#999;font-size:13px;}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px;}.user-block.user-block-sm .username{font-size:14px;}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left;}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important;}.img-sm + .img-push{margin-left:40px;}.img-md{width:60px;height:60px;}.img-md + .img-push{margin-left:70px;}.img-lg{width:100px;height:100px;}.img-lg + .img-push{margin-left:110px;}.img-bordered{border:3px solid #d2d6de;padding:3px;}.img-bordered-sm{border:2px solid #d2d6de;padding:2px;}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7;}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left;}.attachment-block .attachment-pushed{margin-left:110px;}.attachment-block .attachment-heading{margin:0;}.attachment-block .attachment-text{color:#555;}.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:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px;}.full-opacity-hover{opacity:0.65;filter:alpha(opacity=65);}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100);}.chart{position:relative;overflow:hidden;width:100%;}.chart svg,.chart canvas{width:100% !important;}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important;}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0,0) !important;-ms-transform:translate(0,0) !important;-o-transform:translate(0,0) !important;transform:translate(0,0) !important;}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important;}.invoice{width:100%;border:0;margin:0;padding:0;}.invoice-col{float:left;width:33.3333333%;}.table-responsive{overflow:auto;}.table-responsive > .table tr th,.table-responsive > .table tr td{white-space:normal !important;}}.skin-green .main-header .navbar{background-color:#18bc9c;}.skin-green .main-header .navbar .nav > li > a{color:#fff;}.skin-green .main-header .navbar .nav > li > a:hover,.skin-green .main-header .navbar .nav > li > a:active,.skin-green .main-header .navbar .nav > li > a:focus,.skin-green .main-header .navbar .nav .open > a,.skin-green .main-header .navbar .nav .open > a:hover,.skin-green .main-header .navbar .nav .open > a:focus,.skin-green .main-header .navbar .nav > .active > a{background:rgba(0,0,0,0.1);color:#f6f6f6;}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1);}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#15a589;}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1);}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff;}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#15a589;}}.skin-green .main-header .logo{background-color:#15a589;color:#fff;border-bottom:0 solid transparent;}.skin-green .main-header .logo:hover{background-color:#15a185;}.skin-green .main-header li.user-header{background-color:#18bc9c;}.skin-green .content-header{background:transparent;}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32;}.skin-green .user-panel > .info,.skin-green .user-panel > .info > a{color:#fff;}.skin-green .sidebar-menu > li.header{color:#4b646f;background:#1a2226;}.skin-green .sidebar-menu > li > a{border-left:3px solid transparent;}.skin-green .sidebar-menu > li:hover > a,.skin-green .sidebar-menu > li.active > a{color:#fff;background:#1e282c;border-left-color:#18bc9c;}.skin-green .sidebar-menu > li > .treeview-menu{margin:0 1px;background:#2c3b41;}.skin-green .sidebar a{color:#b8c7ce;}.skin-green .sidebar a:hover{text-decoration:none;}.skin-green .treeview-menu > li > a{color:#8aa4af;}.skin-green .treeview-menu > li.active > a,.skin-green .treeview-menu > li > a:hover{color:#fff;}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;background-color:#374850;margin:10px 10px;}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{background-color:#fff;color:#666;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn{background:#fff;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{border-left-color:#fff;}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}@font-face{font-family:"iconfont";src:url(../fonts/iconfont/iconfont.eot?t=1487643189178);src:url(../fonts/iconfont/iconfont.eot?t=1487643189178#iefix) format('embedded-opentype'),url(../fonts/iconfont/iconfont.woff?t=1487643189178) format('woff'),url(../fonts/iconfont/iconfont.ttf?t=1487643189178) format('truetype'),url(../fonts/iconfont/iconfont.svg?t=1487643189178#iconfont) format('svg');}.iconfont{font-family:"iconfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.icon-max:before{content:"\e623";}.icon-restore:before{content:"\e624";}.icon-min:before{content:"\e625";}.icon-close:before{content:"\e626";}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font:SIL OFL 1.1,CSS:MIT License) */@font-face{font-family:'FontAwesome';src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../libs/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../libs/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.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;-webkit-border-radius:3px;border-radius: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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@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}}.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(../libs/layer/dist/theme/default/loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(../libs/layer/dist/theme/default/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(../libs/layer/dist/theme/default/loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(../libs/layer/dist/theme/default/loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(../libs/layer/dist/theme/default/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(../libs/layer/dist/theme/default/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}}.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-pagination:after,.fixed-table-toolbar:after{content:"";display:block;clear:both}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.daterangepicker{position:absolute;color:inherit;background-color:#fff;border-radius:4px;width:278px;padding:4px;margin-top:1px;top:100px;left:20px;}.daterangepicker:before,.daterangepicker:after{position:absolute;display:inline-block;border-bottom-color:rgba(0,0,0,0.2);content:'';}.daterangepicker:before{top:-7px;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid #ccc;}.daterangepicker:after{top:-6px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;}.daterangepicker.opensleft:before{right:9px;}.daterangepicker.opensleft:after{right:10px;}.daterangepicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.openscenter:after{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.opensright:before{left:9px;}.daterangepicker.opensright:after{left:10px;}.daterangepicker.dropup{margin-top:-5px;}.daterangepicker.dropup:before{top:initial;bottom:-7px;border-bottom:initial;border-top:7px solid #ccc;}.daterangepicker.dropup:after{top:initial;bottom:-6px;border-bottom:initial;border-top:6px solid #fff;}.daterangepicker.dropdown-menu{max-width:none;z-index:3001;}.daterangepicker.single .ranges,.daterangepicker.single .calendar{float:none;}.daterangepicker.show-calendar .calendar{display:block;}.daterangepicker .calendar{display:none;max-width:270px;margin:4px;}.daterangepicker .calendar.single .calendar-table{border:none;}.daterangepicker .calendar th,.daterangepicker .calendar td{white-space:nowrap;text-align:center;min-width:32px;}.daterangepicker .calendar-table{border:1px solid #fff;padding:4px;border-radius:4px;background-color:#fff;}.daterangepicker table{width:100%;margin:0;}.daterangepicker td,.daterangepicker th{text-align:center;width:20px;height:20px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer;}.daterangepicker td.available:hover,.daterangepicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit;}.daterangepicker td.week,.daterangepicker th.week{font-size:80%;color:#ccc;}.daterangepicker td.off,.daterangepicker td.off.in-range,.daterangepicker td.off.start-date,.daterangepicker td.off.end-date{background-color:#fff;border-color:transparent;color:#999;}.daterangepicker td.in-range{background-color:#ebf4f8;border-color:transparent;color:#000;border-radius:0;}.daterangepicker td.start-date{border-radius:4px 0 0 4px;}.daterangepicker td.end-date{border-radius:0 4px 4px 0;}.daterangepicker td.start-date.end-date{border-radius:4px;}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#357ebd;border-color:transparent;color:#fff;}.daterangepicker th.month{width:auto;}.daterangepicker td.disabled,.daterangepicker option.disabled{color:#999;cursor:not-allowed;text-decoration:line-through;}.daterangepicker select.monthselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default;}.daterangepicker select.monthselect{margin-right:2%;width:56%;}.daterangepicker select.yearselect{width:40%;}.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.secondselect,.daterangepicker select.ampmselect{width:50px;margin-bottom:0;}.daterangepicker .input-mini{border:1px solid #ccc;border-radius:4px;color:#555;height:30px;line-height:30px;display:block;vertical-align:middle;margin:0 0 5px 0;padding:0 6px 0 28px;width:100%;}.daterangepicker .input-mini.active{border:1px solid #08c;border-radius:4px;}.daterangepicker .daterangepicker_input{position:relative;}.daterangepicker .daterangepicker_input i{position:absolute;left:8px;top:8px;}.daterangepicker.rtl .input-mini{padding-right:28px;padding-left:6px;}.daterangepicker.rtl .daterangepicker_input i{left:auto;right:8px;}.daterangepicker .calendar-time{text-align:center;margin:5px auto;line-height:30px;position:relative;padding-left:28px;}.daterangepicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed;}.ranges{font-size:11px;float:none;margin:4px;text-align:left;}.ranges ul{list-style:none;margin:0 auto;padding:0;width:100%;}.ranges li{font-size:13px;background-color:#f5f5f5;border:1px solid #f5f5f5;border-radius:4px;color:#08c;padding:3px 12px;margin-bottom:8px;cursor:pointer;}.ranges li:hover{background-color:#08c;border:1px solid #08c;color:#fff;}.ranges li.active{background-color:#08c;border:1px solid #08c;color:#fff;}@media (min-width:564px){.daterangepicker{width:auto;}.daterangepicker .ranges ul{width:160px;}.daterangepicker.single .ranges ul{width:100%;}.daterangepicker.single .calendar.left{clear:none;}.daterangepicker.single.ltr .ranges,.daterangepicker.single.ltr .calendar{float:left;}.daterangepicker.single.rtl .ranges,.daterangepicker.single.rtl .calendar{float:right;}.daterangepicker.ltr{direction:ltr;text-align:left;}.daterangepicker.ltr .calendar.left{clear:left;margin-right:0;}.daterangepicker.ltr .calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.ltr .calendar.right{margin-left:0;}.daterangepicker.ltr .calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.ltr .left .daterangepicker_input{padding-right:12px;}.daterangepicker.ltr .calendar.left .calendar-table{padding-right:12px;}.daterangepicker.ltr .ranges,.daterangepicker.ltr .calendar{float:left;}.daterangepicker.rtl{direction:rtl;text-align:right;}.daterangepicker.rtl .calendar.left{clear:right;margin-left:0;}.daterangepicker.rtl .calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.rtl .calendar.right{margin-right:0;}.daterangepicker.rtl .calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.rtl .left .daterangepicker_input{padding-left:12px;}.daterangepicker.rtl .calendar.left .calendar-table{padding-left:12px;}.daterangepicker.rtl .ranges,.daterangepicker.rtl .calendar{text-align:right;float:right;}}@media (min-width:730px){.daterangepicker .ranges{width:auto;}.daterangepicker.ltr .ranges{float:left;}.daterangepicker.rtl .ranges{float:right;}.daterangepicker .calendar.left{clear:none !important;}}.n-inline-block,.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable],.msg-wrap,.n-icon,.n-msg{display:inline-block;*display:inline;*zoom:1;}.nice-validator .msg-container .msg-box{display:block;}.nice-validator .msg-container .msg-wrap{position:static;}.msg-box{position:relative;*zoom:1;}.msg-wrap{position:relative;white-space:nowrap;line-height:16px;font-size:12px;}.msg-wrap,.n-icon,.n-msg{vertical-align:top;}.msg-box .msg-wrap .n-error,.msg-box .msg-wrap .n-ok,.msg-box .msg-wrap .n-tip{display:block;background:none;box-shadow:none;padding:3px 2px;}.n-arrow{position:absolute;overflow:hidden;}.n-arrow b,.n-arrow i{position:absolute;left:0;top:0;border:0;margin:0;padding:0;overflow:hidden;font-weight:400;font-style:normal;font-size:12px;font-family:serif;line-height:14px;_line-height:15px;}.n-arrow i{text-shadow:none;}.n-icon{width:16px;height:16px;overflow:hidden;background-repeat:no-repeat;}.n-msg{display:inline-block;*display:inline;*zoom:1;margin-left:1px;}.n-error{color:#c33;}.n-ok{color:#390;}.n-tip .n-msg,.n-loading{color:#808080;}.n-error .n-icon{background-position:0 0;}.n-ok .n-icon{background-position:-16px 0;}.n-tip .n-icon{background-position:-32px 0;}.n-loading .n-icon{background:url(../libs/nice-validator/dist/images/loading.gif) 0 center no-repeat !important;}.n-top,.n-right,.n-bottom,.n-left{display:inline-block;*display:inline;*zoom:1;line-height:0;vertical-align:top;outline:0;}.n-top .n-arrow,.n-bottom .n-arrow{height:6px;width:12px;left:8px;}.n-left .n-arrow,.n-right .n-arrow{width:6px;height:12px;top:6px;}.n-top{vertical-align:top;}.n-top .msg-wrap{margin-bottom:6px;}.n-top .n-arrow{bottom:-6px;}.n-top .n-arrow b{top:-6px;}.n-top .n-arrow i{top:-7px;}.n-bottom{vertical-align:bottom;}.n-bottom .msg-wrap{margin-top:6px;}.n-bottom .n-arrow{top:-6px;}.n-bottom .n-arrow b{top:-1px;}.n-bottom .n-arrow i{top:0;}.n-left .msg-wrap{right:100%;margin-right:6px;}.n-left .n-arrow{right:-6px;}.n-left .n-arrow b{left:-6px;}.n-left .n-arrow i{left:-7px;}.n-right .msg-wrap{margin-left:6px;}.n-right .n-arrow{left:-6px;}.n-right .n-arrow b{left:1px;}.n-right .n-arrow i{left:2px;}.n-default .n-left,.n-default .n-right{margin-top:5px;}.n-default .n-top .msg-wrap{bottom:100%;}.n-default .n-bottom .msg-wrap{top:100%;}.n-default .msg-wrap{position:absolute;z-index:1;}.n-default .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_default.png);}.n-default .n-tip .n-icon{display:none;}.n-simple .msg-wrap{position:absolute;z-index:1;}.n-simple .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-simple .n-top .msg-wrap{bottom:100%;}.n-simple .n-bottom .msg-wrap{top:100%;}.n-simple .n-left,.n-simple .n-right{margin-top:5px;}.n-simple .n-bottom .msg-wrap{margin-top:3px;}.n-simple .n-tip .n-icon{display:none;}.n-yellow .msg-wrap{position:absolute;z-index:1;padding:4px 6px;font-size:12px;border:1px solid transparent;background-color:#fffcef;border-color:#ffbb76;color:#db7c22;box-shadow:0 1px 3px #ccc;border-radius:2px;}.n-yellow .msg-wrap .n-arrow b{color:#ffbb76;text-shadow:0 0 2px #ccc;}.n-yellow .msg-wrap .n-arrow i{color:#fffcef;}.n-yellow .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-yellow .n-top .msg-wrap{bottom:100%;}.n-yellow .n-bottom .msg-wrap{top:100%;}.n-yellow .n-tip,.n-yellow .n-ok,.n-yellow .n-loading{background-color:#f8fdff;border-color:#ddd;color:#333;box-shadow:0 1px 3px #ccc;}.n-yellow .n-tip .n-arrow b,.n-yellow .n-ok .n-arrow b,.n-yellow .n-loading .n-arrow b{color:#ddd;text-shadow:0 0 2px #ccc;}.n-yellow .n-tip .n-arrow i,.n-yellow .n-ok .n-arrow i,.n-yellow .n-loading .n-arrow i{color:#f8fdff;}@charset "utf-8";.sp_container{border:none;margin:0;padding:0;display:inline-block;position:relative;vertical-align:middle;}.sp_input{background-color:white;border:1px solid #ccc;border-radius:0px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;margin:0 !important;padding:4px 6px;vertical-align:middle;display:block;width:100%;outline:none;box-sizing:border-box;}.sp_input:focus{border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.sp_container_open .sp_input{border-radius:2px !important;}div.sp_button{display:inline-block;border-bottom-right-radius:0;border-top-right-radius:0;cursor:pointer;text-align:center;box-sizing:border-box;border:0;width:24px;height:100%;padding:0;vertical-align:middle;line-height:100%;position:absolute;top:0;right:0;}.sp_container_open > .sp_button{border-bottom-right-radius:0 !important;}div.sp_button span.sp_caret{position:absolute;top:50%;right:12px;margin-top:-1px;vertical-align:middle;display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent;}div.sp_clear_btn{position:absolute;top:0;right:25px;display:block;width:auto;height:100%;cursor:pointer;font-size:18px;color:#666666;font-weight:600;margin:0;padding:5px 0 0 0;box-sizing:border-box;line-height:1;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}div.sp_clear_btn:hover{color:black;font-weight:bold;}div.sp_clear_btn i{font-size:12px;}div.sp_clear_btn.sp_align_right{right:10px;}.sp_result_area{background-color:white;border:1px solid #D6D7D7;display:none;list-style:none;margin:0;padding:0;position:absolute;z-index:100;width:300px;border-radius:2px;}div.sp_result_area.shadowDown{box-shadow:0 3px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 3px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 12px rgba(0,0,0,0.2);}div.sp_result_area.shadowUp{box-shadow:0 -1px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 -1px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 -1px 12px rgba(0,0,0,0.2);}.sp_results{background-color:white;list-style:none;margin:0;padding:3px 0;}.sp_results > li{height:auto !important;line-height:1;margin:0;overflow:hidden;padding:5px 8px;position:relative;text-align:left;white-space:nowrap;font-size:13px;color:black;cursor :pointer;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";}.sp_results > li.sp_message_box{height:30px;line-height:30px;text-align:center;box-sizing:content-box;font-size:14px;cursor:default;}ul.sp_results > li.sp_over{background-color:#53A4EA !important;color:#fff !important;cursor:pointer;}ul.sp_results > li.sp_selected{color:#cccccc;cursor:default;}.sp_control_box{padding:0;height:27px;}.sp_control_box p{margin:0;line-height:27px;padding-left:8px;font-size:14px;font-weight:400;}.sp_control_box button{height:27px;line-height:20px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:13px !important;padding:0 12px;border:0;background:white none;color:#666666;text-align:left;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);outline:none !important;float:right;opacity:.3;}.sp_control_box:hover{background-color:#F8F8F8;}.sp_control_box:hover button{background-color:#F8F8F8;opacity:1;}.sp_control_box:hover button:hover{background-color:#EEEEEE;color:black;}div.sp_container_combo{border:1px solid #CCCCCC;border-radius:0px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-sizing:border-box;}div.sp_container_combo.sp_disabled{box-shadow:none;}div.sp_container_combo.sp_disabled,div.sp_container_combo.sp_disabled ul.sp_element_box,div.sp_container_combo.sp_disabled .sp_input,div.sp_container.sp_disabled .sp_input{background-color:#eeeeee;cursor:not-allowed !important;}div.sp_container.sp_disabled .sp_clear_btn,div.sp_container_combo.sp_disabled ul.sp_element_box span.tag_close{display:none;}div.sp_container_combo.sp_container_open{border-radius:0px;}input.sp_combo_input{border:0 !important;box-shadow:none;background-color:transparent;max-width:100%;padding:0;height:34px !important;line-height:34px !important;min-height:34px !important;}input.sp_combo_input:focus{box-shadow:none;border:0;}input.sp_combo_input[readonly],input.sp_combo_input[disabled]{background-color:white;}ul.sp_element_box{margin:0;padding:3px 0 0 3px;position:relative;overflow:hidden;clear:both;cursor:text;margin-right:24px;list-style:none;height:auto;min-height:25px;}ul.sp_element_box > li{list-style:none;padding:0 5px;margin-right:3px;margin-bottom:2px;float:left;position:relative;box-sizing:content-box;}ul.sp_element_box li.full_width{width:100%;}ul.sp_element_box li.full_width input{width:100% !important;}ul.sp_element_box li.selected_tag{border:1px solid #AAAAAA;border-radius:3px;background-color:#EFEFEF;cursor:pointer;max-width:100%;box-shadow:0 0 2px white inset,0 1px 0 rgba(0,0,0,0.05);height:22px;line-height:22px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}ul.sp_element_box li.selected_tag:hover{background-color:white;border:1px solid #D0D0D0;box-shadow:0 2px 7px rgba(0,0,0,.1);}ul.sp_element_box li.selected_tag i{font-size:12px;color:#AAAAAA;}ul.sp_element_box li.selected_tag i:hover{color:black;}ul.sp_element_box li.input_box{padding:0;margin-top:0;height:24px;min-height:24px;}ul.sp_element_box li.input_box input{height:26px !important;line-height:26px !important;min-height:26px !important;}ul.sp_element_box li.selected_tag span.tag_close{cursor:pointer;margin-left:5px;font-size:14px;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}.sp_results_off{}.sp_input_off{background:#eee;color:#333333;}.sp_hide{display:none;}.sp_navi{background:#eee;border-bottom:1px solid #79b;font-size:13px;font-weight:normal;line-height:1;margin:0;padding:4px;text-align:right;}.sp_navi > p > a:link,.sp_navi > p > a:visited,.sp_navi > p > a:hover,.sp_navi > p > a:active{color:blue;font-weight:normal;margin:0 4px;text-decoration:underline;}.sp_navi > p{color:black;font-size:15px;margin:0;padding-top:4px;text-align:center;}.sp_navi > p > a >.current{color:#00c;font-size:16px;font-weight:bold;}.sp_navi > p >.page_end{color:gray;font-weight:normal;margin:0 4px;}.navi_page,.navi_first,.navi_prev,.navi_next,.navi_last{margin:auto 4px !important;}.sp_navi > .info{margin:0 !important;padding:0 !important;}.sp_container > .sp_select_ng{background:#fcc;}div.sp_container input.sp_input.input-block-level{box-sizing:border-box;height:30px;line-height:30px;min-height:30px;width:100%;}div.sp_container_open .sp_input::-ms-clear{display:none;}input::-ms-clear{display:none;}input::-ms-reveal{display:none;}div.sp_navi > p{font-size:12px;}div.sp_result_area div.sp_pagination{margin:0;padding:0;height:26px;line-height:26px;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;display:block;}div.sp_result_area div.sp_pagination.hide{display:none;}div.sp_result_area div.sp_pagination ul{width:100%;display:inline-block;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;padding:0;}div.sp_result_area div.sp_pagination li{text-align:center;display:inline;box-sizing:border-box;}div.sp_result_area div.sp_pagination>ul>li>a{margin:0;border-radius:0;padding:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;background-color:white;float:left;text-decoration:none;border:0;box-sizing:content-box;color:#666666;font-size:13px;height:26px;line-height:26px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}div.sp_result_area div.sp_pagination li.csFirstPage a,div.sp_result_area div.sp_pagination li.csPreviousPage a,div.sp_result_area div.sp_pagination li.csNextPage a,div.sp_result_area div.sp_pagination li.csLastPage a{width:30px;}div.sp_result_area div.sp_pagination li.csFirstPage a{border-left:0;border-bottom-left-radius:2px;}div.sp_result_area div.sp_pagination li.csLastPage a{border-right:0;border-bottom-right-radius:2px;}div.sp_result_area div.sp_pagination>ul>li>a:hover{color:#000000;background-color:#E8E8E8;}div.sp_result_area div.sp_pagination>ul>li.disabled>a{color:#DDDDDD;cursor:default;}div.sp_result_area div.sp_pagination>ul>li.disabled>a:hover{color:#DDDDDD;background-color:white;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a{width:178px;text-align:center;color:#666666;font-size:14px;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a:hover{background-color:inherit;color:#666666;cursor:default;}@font-face{font-family:"spfont";src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==');src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('embedded-opentype'),url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAi8AAsAAAAADSQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kj9Y21hcAAAAYAAAACoAAACNjWzO3RnbHlmAAACKAAABDQAAAXE0sEAXGhlYWQAAAZcAAAALwAAADYPYaJpaGhlYQAABowAAAAeAAAAJAfeA41obXR4AAAGrAAAABcAAAAsK+oAAGxvY2EAAAbEAAAAGAAAABgIbAmwbWF4cAAABtwAAAAfAAAAIAEaAHhuYW1lAAAG/AAAAUUAAAJtPlT+fXBvc3QAAAhEAAAAdQAAAKCcItv9eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sc4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDznZW7438AQw9zA0AAUZgTJAQAmWQyAeJzFkjEOgkAQRf8KLkoksfIMFJaUnISTUBgSOgsOYuWxPsfAPzs0Bm11Nm+T+ZvMTP4sgD2ATFxFDoQnAiweUkPSM5RJz3FTfsFZSkRPsGbDlh0Hjpzmaln0/k3fRlCt7TG9VK8dDjhquqhuhcT4scZPIvyv9Xuc0n1fM20F/YpGJBzTWTu2UTaOHAVbR96CnSOXwcGx38DRkfPg5NgPmSsHxQsreTV9eJxlVE2MFEUUrq+K6Zpepnum/6bnh/npbrbbze7O6vxtVnZnTeACaNxkjaIbdL2YGAJH9uJhjTEBJMZw0cQDi0JEjSEe8EQMBMRwxKMXIBpN8KjhxBS+HoaNxE7n1ffqe11f1Xuvi2UYe3RPXBEl5rBn2HNsH1thDNo0QpPXECTdFp+GF2Q83zVFEiWBjMKWWIIfam6x3e/Gvia1PEzU0Qna/aTFE/S6A74H7WINKFcrq/bkLlt8golSUv9QHeBfwGtEu/KDWbV/ZtltN53sRs62y7Z9OqtlMlnOd+RNHPWLekaf0NT5TL7iXWlM8QZy5aTy4utGs2q/faJ7rDbp68DmJpxq0/xq2apY9L5XKTp2WRaMbKliRLtdbPy+s+TkavFvjB5OZ70qrooXWJ416ZTtom+ZiIIwTqwBOpOBCWnV4QcDzFstJOKVUgNolIaHSk2gWeIXh4daS8BSi1+cTcdZkWuO2JQrNTtYbFHEImjkF2kkTUGaN8U58TybYnvZEVINerR0RFJeEGo1uEW/45E31iWu1xlgCd1Yulq6N4L9TtAbIE2p7wXtoiei9Muo142pTv9B0otoiV7g0WLpnNhU99GKno1aUPcNxzEs5AHb5D+aNghaNFfS5bAvdV0ipiPm0pPGUr+ZzcgPZIbsRyOLLSoxP0HmM8n3XApngdnwkm2eNWw86O8HDbANfrD/Nw1nTftCuuIRqd/26bmtS3VDZm7dyshti+X+gwf9ZZDHdlCObovvRZ/q0mARSxhzBmk7jeojA8qJYz3ur57VjSkpGpJ5P4GPlzAT8J+DdDvBcCGYoSR5ef5lwfMKw8N5D9m7U3dfxg/T6iD/M5gdx6TfXB4eToNGocNv70zd0XF5Wh0Y98j71CMFFlK1+t0EMfU6NVva8PPONnpC8Vd1Xa3rVVvHSbWh21X9r22ErTGHdycqE+Q5FV0dV8f1iqOL14xtjK0x/T99Ukb6nyU66cWhFNvoCYVv9FSH9NUGTj7Wf4JI+zGHT0mAPNLHKZxKNR9+bWxjtT6mGfXsoz/4r6JC+kx/6ugky39Rm1m3kMUxdSZbcLPYzOIMGYLqDE2lFAVQ32fSH05cE28wi9XZNJthC4xNBmEL/XkM0k6mG8MENDpHcXRzIBZh3LNSzrNcTUZuHe0Bui26iiBWhuthpyoKWLVavTkLqwVR7aiP7YL6ruAGfCtwU2QbDqxdtmPM5fySnxuZenluoc7frDeb9eG52sJcmT9EjVAY1vhbNbXbMdAwbNtQ9wznaK5oGMVyasb3xTX+E/27OVamWoRxl5LQLrq0Z8S04W6/TSVwNegThoYL0jGlWpP4nPp9TTNtSVMm3jHtLM5LcolTaxgFGho5jsFG+f5HnBY5tpPyI3VQeed16mxxekXdUDdWsKSur2ARiyvq+r6nPCxRBG3zX8yJDj54nGNgZGBgAOL3RuU28fw2Xxm4WRhA4JqiviaC/n+AhYE5CsjlYGACiQIA93sITQB4nGNgZGBgbvjfwBDDAmQxMLAwMIBpJMANAEcqAnUAAHicY2FgYGB+ycDAwkAAMzIwAAAnpgEWAAAAAAAAdgCwAUIBiAHIAggCLAKOAsAC4nicY2BkYGDgZshhYGUAASYg5gJCBob/YD4DABRyAZMAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicbYnNDsIgEAb3q8Va8Kav0YNPZMiKsFrZBKmpPr1/N+OcJjPU0BdL/3FosEALgyU6rNDDwmFNmA2nwGcrrHngMfjSz5PPj6Q5bj/xICVwlZcVialufuIYjrW967TrTpJj9Oqy3iTq/j1MlUu4Ej0BvEMlfAAAAA==') format('woff'),url('data:image/ttf;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ydzxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('truetype'),url('data:image/svg;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPCEtLQoyMDEzLTktMzA6IENyZWF0ZWQuCi0tPgo8c3ZnPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgaWNvbmZvbnQKPC9tZXRhZGF0YT4KPGRlZnM+Cgo8Zm9udCBpZD0iaWNvbmZvbnQiIGhvcml6LWFkdi14PSIxMDI0IiA+CiAgPGZvbnQtZmFjZQogICAgZm9udC1mYW1pbHk9Imljb25mb250IgogICAgZm9udC13ZWlnaHQ9IjUwMCIKICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIgogICAgdW5pdHMtcGVyLWVtPSIxMDI0IgogICAgYXNjZW50PSI4OTYiCiAgICBkZXNjZW50PSItMTI4IgogIC8+CiAgICA8bWlzc2luZy1nbHlwaCAvPgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieCIgdW5pY29kZT0ieCIgaG9yaXotYWR2LXg9IjEwMDEiCmQ9Ik0yODEgNTQzcS0yNyAtMSAtNTMgLTFoLTgzcS0xOCAwIC0zNi41IC02dC0zMi41IC0xOC41dC0yMyAtMzJ0LTkgLTQ1LjV2LTc2aDkxMnY0MXEwIDE2IC0wLjUgMzB0LTAuNSAxOHEwIDEzIC01IDI5dC0xNyAyOS41dC0zMS41IDIyLjV0LTQ5LjUgOWgtMTMzdi05N2gtNDM4djk3ek05NTUgMzEwdi01MnEwIC0yMyAwLjUgLTUydDAuNSAtNTh0LTEwLjUgLTQ3LjV0LTI2IC0zMHQtMzMgLTE2dC0zMS41IC00LjVxLTE0IC0xIC0yOS41IC0wLjUKdC0yOS41IDAuNWgtMzJsLTQ1IDEyOGgtNDM5bC00NCAtMTI4aC0yOWgtMzRxLTIwIDAgLTQ1IDFxLTI1IDAgLTQxIDkuNXQtMjUuNSAyM3QtMTMuNSAyOS41dC00IDMwdjE2N2g5MTF6TTE2MyAyNDdxLTEyIDAgLTIxIC04LjV0LTkgLTIxLjV0OSAtMjEuNXQyMSAtOC41cTEzIDAgMjIgOC41dDkgMjEuNXQtOSAyMS41dC0yMiA4LjV6TTMxNiAxMjNxLTggLTI2IC0xNCAtNDhxLTUgLTE5IC0xMC41IC0zN3QtNy41IC0yNXQtMyAtMTV0MSAtMTQuNQp0OS41IC0xMC41dDIxLjUgLTRoMzdoNjdoODFoODBoNjRoMzZxMjMgMCAzNCAxMnQyIDM4cS01IDEzIC05LjUgMzAuNXQtOS41IDM0LjVxLTUgMTkgLTExIDM5aC0zNjh6TTMzNiA0OTh2MjI4cTAgMTEgMi41IDIzdDEwIDIxLjV0MjAuNSAxNS41dDM0IDZoMTg4cTMxIDAgNTEuNSAtMTQuNXQyMC41IC01Mi41di0yMjdoLTMyN3oiIC8+CiAgICAKCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGVjayIgdW5pY29kZT0iJiM1ODkzMjsiIGQ9Ik04NTEuNjA4IDc4MC4yNzljMzEuMDU2IDAgNTYuMzIzLTI1LjI2NyA1Ni4zMjMtNTYuMzI1di02NzkuODg2YzAtMzEuMDU3LTI1LjI2Ni01Ni4zMjQtNTYuMzIzLTU2LjMyNGgtNjc5Ljg4NmMtMzEuMDU4IDAtNTYuMzI1IDI1LjI2Ni01Ni4zMjUgNTYuMzI0bDAgNjc5Ljg4NmMwIDMxLjA1OCAyNS4yNjcgNTYuMzI1IDU2LjMyNSA1Ni4zMjVoNjc5Ljg4Nk04NTEuNjA4IDgzMS40NDVoLTY3OS44ODZjLTU5LjM2NSAwLTEwNy40OS00OC4xMjUtMTA3LjQ5LTEwNy40OXYtNjc5Ljg4NmMwLTU5LjM2NSA0OC4xMjUtMTA3LjQ4OSAxMDcuNDktMTA3LjQ4OWg2NzkuODg2YzU5LjM2NSAwIDEwNy40ODggNDguMTI0IDEwNy40ODggMTA3LjQ4OXY2NzkuODg2YzAgNTkuMzY1LTQ4LjEyMyAxMDcuNDktMTA3LjQ4OCAxMDcuNDl2MHoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWNsZWFyIiB1bmljb2RlPSImIzU5MDIwOyIgZD0iTTg5NS41OSA1NzEuMDgwaC0yNzcuNDg5djE3NS4xMjRjMCA0My43ODEtMzYuNzIxIDc5LjYwMS04MS42MTggNzkuNjAxaC00OC45NjNjLTQ0Ljg5NyAwLTgxLjYyMy0zNS44Mi04MS42MjMtNzkuNjAxdi0xNzUuMTI0aC0yNzcuNDg5Yy0xNy45NTYgMC0zMi42NDUtMTQuMzM2LTMyLjY0NS0zMS44NDZ2LTE1OS4yMDFjMC0xNy41MjEgMTQuNjg5LTMxLjg1MiAzMi42NDUtMzEuODUyaDE2LjMyM3YtMjQ1Ljk3YzAtNzAuMDU3LTE2LjMyMy0xMjguMTc0LTE2LjMyMy0xMjguMTc0IDAtMTcuNTEgMTQuNjk0LTMxLjg0NiAzMi42NDUtMzEuODQ2aDcwMS44OTFjMTcuOTYxIDAgMzIuNjQ1IDE0LjM0MSAzMi42NDUgMzEuODQ2IDAgMC0xNi4zMjMgNjAuNTA4LTE2LjMyMyAxMzEuMzU5djI0Mi43ODVoMTYuMzIzYzE3Ljk2MSAwIDMyLjY0NSAxNC4zMzYgMzIuNjQ1IDMxLjg0NnYxNTkuMjA2YzAgMTcuNTE2LTE0LjY3OSAzMS44NDYtMzIuNjQ1IDMxLjg0NnpNODg1LjExNSA0MDYuMTY0YzAtOC43NTUtNy4zNDItMTUuOTE4LTE2LjMyOC0xNS45MThoLTcxMy41NzRjLTguOTggMC0xNi4zMjMgNy4xNjgtMTYuMzIzIDE1LjkyM3YxMDYuOTIxYzAgOC43NiA3LjM0MiAxNS45MjMgMTYuMzIzIDE1LjkyM2gyOTMuODExdjIwOS4yMzljMCAzMS4wNDMgMjUuMzAzIDQ1LjQ5MSA1Ny4xMzQgNDUuNDkxaDExLjY4OWMzMS44MjYgMCA1Ny4xMjQtMTQuNDQ5IDU3LjEyNC00NS40OTF2LTIwOS4yMzRoMjkzLjgxNmM4Ljk4NiAwIDE2LjMyOC03LjE1OCAxNi4zMjgtMTUuOTIzdi0xMDYuOTI2ek02ODcuNDczIDE5Ni45MzFoLTguMTY2Yy02LjUyMyAwLTEyLjIzNy01LjU3MS0xMi4yMzctMTEuOTR2LTIwMC43MjRoLTEzMC41ODZ2MjAwLjcxOWMwIDYuMzY5LTUuNzA5IDExLjk0LTEyLjI0NyAxMS45NGgtOC4xNTZjLTYuNTIzIDAtMTIuMjM3LTUuNTcxLTEyLjIzNy0xMS45NHYtMjAwLjcyNGgtMTM4Ljc0N3YyMDAuNzI0YzAgNi4zNjktNS43MTQgMTEuOTQtMTIuMjUyIDExLjk0aC04LjE1MWMtNi41MjggMC0xMi4yNDctNS41NzEtMTIuMjQ3LTExLjk0di0yMDAuNzI0aC0xNjAuOTIyczE2LjMyOCA0Ny4wODkgMTYuMzI4IDExNy45Mzl2MjQ1Ljk3NWg2NDguMjk0di0yNDUuOTc1YzAtNzAuODUxIDE2LjMyMy0xMTcuOTM5IDE2LjMyMy0xMTcuOTM5aC0xNTIuNzU1djIwMC43MjRjMCA2LjM2OS01LjcxNCAxMS45NC0xMi4yNDIgMTEuOTR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieHVhbnpob25nIiB1bmljb2RlPSImIzU4OTIwOyIgZD0iTTc2Ljg4MzkxMSA3NDIuODc5OTNjMCA0My4zNzE3MjMgMzUuMDg4MDc2IDc4LjUzMDQwNyA3OC41MjkzODQgNzguNTMwNDA3aDcxMC42MTIwOGM0My4zNzE3MjMgMCA3OC41MzA0MDctMzUuMDg4MDc2IDc4LjUzMDQwNy03OC41MzA0MDd2LTcxMC42MTEwNTdjMC00My4zNzE3MjMtMzUuMDg4MDc2LTc4LjUzMDQwNy03OC41MzA0MDctNzguNTMwNDA3SDE1NS40MTQzMThjLTQzLjM3MDcgMC03OC41MjkzODQgMzUuMDg4MDc2LTc4LjUyOTM4NCA3OC41MzA0MDdWNzQyLjg3OTkzaC0wLjAwMTAyM3ogbTU5LjMyOTEyOC0xNy45MTYwMDl2LTY3NC43NzY5OTJjMC0yMC41Mzk3NjEgMTYuNTkwODMtMzcuMTIwMzU4IDM3LjExOTMzNS0zNy4xMjAzNThoNjc0Ljc3ODAxNWMyMC41Mzc3MTQgMCAzNy4xMTkzMzUgMTYuNTg5ODA3IDM3LjExOTMzNSAzNy4xMjAzNTh2Njc0Ljc3Njk5MmMwIDIwLjUzODczOC0xNi41OTA4MyAzNy4xMjAzNTgtMzcuMTE5MzM1IDM3LjEyMDM1OEgxNzMuMzMxMzUxYy0yMC41Mzg3MzggMC0zNy4xMTgzMTItMTYuNTkxODU0LTM3LjExODMxMi0zNy4xMjAzNTh6TTQwMC41NjAxMzEgMTQzLjk0MzA3OUwxNzcuMjQyNDE5IDM2Ny4yMTY3ODlsNDEuMjE2NjQ1IDQxLjE3MTYxOSAyMjMuMjc2NzgtMjIzLjI3Njc4LTQxLjE3NTcxMy00MS4xNjg1NDl6TTM2My4yOTEzOTQgMTkzLjkwMDc4N2w0MzcuMzAxODY3IDQzNy4zMDU5NiA0My42MDQwMTMtNDMuNTk2ODUtNDM3LjI2NzA3NS00MzcuMzAzOTEzLTI3LjE3ODk1OCAyNy4xMzcwMDMtMTYuNDU5ODQ3IDE2LjQ1Nzh6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaWNvbi1kaXJlY3Rpb24tcmlnaHQiIHVuaWNvZGU9IiYjNTkwMDY7IiBkPSJNNTk4LjA4NiAzNjEuNDUxYzYuMDQ0IDYuMDI4IDkuMzczIDE0LjA0IDkuMzczIDIyLjU2IDAgOC41MjEtMy4zMyAxNi41MjUtOS4zNzEgMjIuNTM2TDE4Mi4wMDQgODIyLjYzYy02LjAzNCA2LjAzNC0xNC4wNTIgOS4zNTQtMjIuNTc5IDkuMzQ5LTguNTEzLTAuMDA1LTE2LjUxLTMuMzI2LTIyLjUxOS05LjM1MS02LjAyNy02LjA0Mi05LjM0Ni0xNC4wNTgtOS4zNDYtMjIuNTcxIDAtOC41MTQgMy4zMi0xNi41MjIgOS4zNDgtMjIuNTUxTDUzMC40MTcgMzg0IDEzNi45MS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhsNDE2LjA4MiA0MTYuMDgxek00MTYuNTM3IDgwMC4wNTdjMC04LjUxNCAzLjMyLTE2LjUyMiA5LjM0OC0yMi41NTFMODE5LjM5MiAzODQgNDI1Ljg4NS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhMODg3LjA2IDM2MS40NTJjNi4wNDQgNi4wMjggOS4zNzMgMTQuMDQgOS4zNzMgMjIuNTYgMCA4LjUyMS0zLjMzIDE2LjUyNS05LjM3MSAyMi41MzZMNDcwLjk4IDgyMi42M2MtNi4wMzQgNi4wMzQtMTQuMDUyIDkuMzU0LTIyLjU3OSA5LjM0OS04LjUxMy0wLjAwNS0xNi41MS0zLjMyNi0yMi41MTktOS4zNTEtNi4wMjYtNi4wNDItOS4zNDUtMTQuMDU4LTkuMzQ1LTIyLjU3MXoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWRpcmVjdGlvbi1sZWZ0IiB1bmljb2RlPSImIzU5MDA5OyIgZD0iTTQyNS45MDkgNDA2LjU0OWMtNi4wNDQtNi4wMjgtOS4zNzMtMTQuMDQtOS4zNzMtMjIuNTYgMC04LjUyMSAzLjMzLTE2LjUyNSA5LjM3MS0yMi41MzZMODQxLjk5LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NiAxNC4wNTggOS4zNDYgMjIuNTcxIDAgOC41MTMtMy4zMiAxNi41MjItOS4zNDggMjIuNTUxTDQ5My41NzcgMzg0bDM5My41MDggMzkzLjUwN2M2LjAyOCA2LjAyOCA5LjM0OCAxNC4wNDEgOS4zNDggMjIuNTYycy0zLjMyIDE2LjUzNC05LjM0OCAyMi41NjJjLTYuMDM0IDYuMDM0LTE0LjA1NCA5LjM1NC0yMi41OCA5LjM0OC04LjUxMi0wLjAwNi0xNi41MDgtMy4zMjYtMjIuNTE0LTkuMzQ4TDQyNS45MDkgNDA2LjU0OXpNNjA3LjQ1Ny0zMi4wNTcwMDAwMDAwMDAwMTZjMCA4LjUxMy0zLjMyIDE2LjUyMi05LjM0OCAyMi41NTFMMjA0LjYwMiAzODQgNTk4LjExIDc3Ny41MDcwMDAwMDAwMDAxYzYuMDI4IDYuMDI4IDkuMzQ4IDE0LjA0MSA5LjM0OCAyMi41NjJzLTMuMzIgMTYuNTM0LTkuMzQ4IDIyLjU2MmMtNi4wMzQgNi4wMzQtMTQuMDU0IDkuMzU0LTIyLjU4IDkuMzQ4LTguNTEyLTAuMDA2LTE2LjUwOC0zLjMyNi0yMi41MTQtOS4zNDhMMTM2LjkzNCA0MDYuNTQ5Yy02LjA0NC02LjAyOC05LjM3My0xNC4wNC05LjM3My0yMi41NiAwLTguNTIxIDMuMzMtMTYuNTI1IDkuMzcxLTIyLjUzNkw1NTMuMDE1LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NSAxNC4wNTkgOS4zNDUgMjIuNTcxeiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPgoKICAgIAogICAgPGdseXBoIGdseXBoLW5hbWU9InlvdTEiIHVuaWNvZGU9IiYjNTkxNDk7IiBkPSJNNzIxLjkyIDQwMS45MmwtMzg0IDM4NGMtMTAuMjQgMTAuMjQtMjUuNiAxMC4yNC0zNS44NCAwcy0xMC4yNC0yNS42IDAtMzUuODRMNjY4LjE2IDM4NCAzMDIuMDggMTcuOTJjLTEwLjI0LTEwLjI0LTEwLjI0LTI1LjYgMC0zNS44NHMyNS42LTEwLjI0IDM1Ljg0IDBsMzg0IDM4NGMxMC4yNCAxMC4yNCAxMC4yNCAyNS42IDAgMzUuODR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iamluZ2dhbyIgdW5pY29kZT0iJiM1ODk0MDsiIGQ9Ik04NDcuNTU0NTYgMjkuOTAwOEgxNzYuNDcxMDRjLTQ1LjAwNDggMC04MS4xNTcxMiAxNy42Mzg0LTk5LjIxMDI0IDQ4LjQwOTYtMTguMDU4MjQgMzAuNzY2MDgtMTUuODYxNzYgNzAuOTU4MDggNi4wNTE4NCAxMTAuMjMzNkw0MjEuOTA4NDggNzk1LjM1MTA0QzQ0My45NTAwOCA4MzQuOTEzMjggNDc2LjcyMzIgODU3LjU4OTc2IDUxMS43OTAwOCA4NTcuNTg5NzZzNjcuODA5MjgtMjIuNjQ1NzYgODkuOTEyMzItNjIuMTcyMTZsMzM4Ljk1NDI0LTYwNi45MzUwNGMyMS45MDg0OC0zOS4yNzU1MiAyNC4xNzE1Mi03OS40MzY4IDYuMDgyNTYtMTEwLjIwMjg4LTE4LjAyNzUyLTMwLjc2NjA4LTU0LjIxMDU2LTQ4LjM3ODg4LTk5LjE4NDY0LTQ4LjM3ODg4ek01MTEuODI1OTIgNzkzLjg5MTg0Yy0xMS4xNTEzNiAwLTIzLjkyMDY0LTExLjA1NDA4LTM0LjI3MzI4LTI5LjU1Nzc2TDEzOC45NTY4IDE1Ny40NjA0OGMtMTAuNjA4NjQtMTkuMDQ2NC0xMy4wOTE4NC0zNi4xNTIzMi02Ljc1MzI4LTQ2Ljk0NTI4IDYuMzQzNjgtMTAuNzY3MzYgMjIuNDg3MDQtMTYuOTQ3MiA0NC4yNzI2NC0xNi45NDcyaDY3MS4wODM1MmMyMS44MjE0NCAwIDM3LjkzOTIgNi4xNDkxMiA0NC4yNzI2NCAxNi45NDcyIDYuMzAyNzIgMTAuNzYyMjQgMy44NTUzNiAyNy44NjgxNi02Ljc4NCA0Ni45MTQ1Nkw1NDYuMDk5MiA3NjQuMzM0MDhjLTEwLjMyNzA0IDE4LjUwMzY4LTIzLjE1Nzc2IDI5LjU1Nzc2LTM0LjI3MzI4IDI5LjU1Nzc2eiBtMC4xODk0NC00NzYuNjQxMjhhMzEuODQ2NCAzMS44NDY0IDAgMCAwLTMxLjg0NjQgMzEuODUxNTJWNjM1Ljc1MDRhMzEuODYxNzYgMzEuODYxNzYgMCAwIDAgMzEuODQ2NCAzMS44NTE1MiAzMS44NjE3NiAzMS44NjE3NiAwIDAgMCAzMS44NTE1Mi0zMS44NTE1MnYtMjg2LjY1MzQ0YTMxLjg0NjQgMzEuODQ2NCAwIDAgMC0zMS44NTE1Mi0zMS44NDY0ek01MTIgMjA4LjM4OTEybS00Ny4zMzk1MiAwYTQ3LjMzOTUyIDQ3LjMzOTUyIDAgMSAxIDk0LjY3OTA0IDAgNDcuMzM5NTIgNDcuMzM5NTIgMCAxIDEtOTQuNjc5MDQgMFoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJub3ZpZ29fbGVmdCIgdW5pY29kZT0iJiM1ODk3MDsiIGQ9Ik0yNjQuNzAwMTQ5IDM1OC4yODczODVhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhjLTguOTkxNzkyIDguOTkxNzkyLTguOTkxNzkyIDIzLjU2OTgxMiAwIDMyLjU2MTYwM2w0MjAuNzkyNzE4IDQyMC43OTM3NDJjOC45OTE3OTIgOC45OTE3OTIgMjMuNTY5ODEyIDguOTkxNzkyIDMyLjU2MTYwMyAwIDguOTkwNzY4LTguOTkxNzkyIDguOTkwNzY4LTIzLjU2OTgxMiAwLTMyLjU2MDU4bC00MjAuNzkzNzQxLTQyMC43OTQ3NjVhMjIuOTQ3NjQxIDIyLjk0NzY0MSAwIDAgMC0xNi4yNzk3NzktNi43NDM1ODh6TTY4NS40OTM4OTEtNjIuNTA2MzU2OTk5OTk5OThhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhsLTQyMC43OTM3NDIgNDIwLjc5NDc2NWMtOC45OTE3OTIgOC45OTE3OTItOC45OTE3OTIgMjMuNTY5ODEyIDAgMzIuNTYxNjA0IDguOTkwNzY4IDguOTkwNzY4IDIzLjU2OTgxMiA4Ljk5MDc2OCAzMi41NjA1OCAwbDQyMC43OTM3NDEtNDIwLjc5Mzc0MmM4Ljk5MDc2OC04Ljk5MTc5MiA4Ljk5MDc2OC0yMy41Njk4MTIgMC0zMi41NjE2MDRhMjIuOTQ4NjY1IDIyLjk0ODY2NSAwIDAgMC0xNi4yNzk3NzgtNi43NDQ2MTF6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGltZXMiIHVuaWNvZGU9IiYjNTg4ODA7IiBkPSJNOTA3LjUxIDY3LjU5NTAwMDAwMDAwMDAzbC03OS4xMDEtNzkuMTAyLTMxNi40MDYgMzE2LjQwNS0zMTYuNDA1LTMxNi40MDUtNzkuMTA0IDc5LjEwMkw0MzIuODk5IDM4NCAxMTYuNDk0IDcwMC40MDVsNzkuMTA0IDc5LjA5OSAzMTYuNDA1LTMxNi40MDVMODI4LjQxIDc3OS41MDRsNzkuMDk4LTc5LjA5OUw1OTEuMTAyIDM4NGwzMTYuNDA1LTMxNi40MDV6IiAgaG9yaXotYWR2LXg9IjEwMjUiIC8+CgogICAgCgoKICA8L2ZvbnQ+CjwvZGVmcz48L3N2Zz4K') format('svg');}.spfont{font-family:"spfont" !important;font-size:14px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.sp-unselect-all:before{content:"\e634";}.sp-clear:before{content:"\e68c";}.sp-select-all:before{content:"\e628";}.sp-last:before{content:"\e67e";}.sp-first:before{content:"\e681";}.sp-next:before{content:"\e70d";}.sp-warning:before{content:"\e63c";}.sp-previous:before{content:"\e65a";}.sp-close:before{content:"\e600";}body{background:#f1f4f6;}body.is-dialog{background:#fff;}.selection{position:absolute;border:1px solid #8B9;background-color:#BEC;}.main-header .logo,.main-header .navbar{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.main-header .navbar{position:relative;}.main-header .navbar .sidebar-toggle{position:absolute;width:45px;text-align:center;}.main-header .navbar #nav{position:absolute;left:45px;}.main-header .navbar .navbar-custom-menu{position:absolute;right:0;}.bootstrap-dialog .modal-dialog{max-width:885px;}html.ios-fix,html.ios-fix body{height:100%;overflow:auto;-webkit-overflow-scrolling:touch;}.content{min-height:500px;}#header{background:#fff;box-shadow:0 2px 2px rgba(0,0,0,0.05),0 1px 0 rgba(0,0,0,0.05);}.content-wrapper{position:relative;}.control-relative{position:relative;}.tab-addtabs{overflow:hidden;}.tab-addtabs .tab-pane{height:100%;width:100%;}.row-between .col-xs-6 + .col-xs-6:before{content:"-";position:absolute;left:-2%;top:6px;}@media only screen and (min-width:481px){.row-flex{display:flex;flex-wrap:wrap;}.row-flex > [class*='col-']{display:flex;flex-direction:column;}.row-flex.row:after,.row-flex.row:before{display:flex;}}@media (max-width:991px){.main-header .navbar-custom-menu a.btn-danger{color:#fff;background-color:#e74c3c;}.main-header .navbar-custom-menu a.btn-primary{color:#fff;background-color:#2c3e50;}}.common-search-table{min-height:20px;padding:15px;margin-bottom:15px;background-color:#f5f5f5;}.searchit{border-bottom:1px dashed #3c8dbc;}.fixed-footer{position:fixed;bottom:0;background-color:#ecf0f1;width:100%;margin-bottom:0;padding:10px;}.layer-footer{display:none;}table.table-template{overflow:hidden;}.sp_container .msg-box{position:absolute;right:0;top:0;}.toast-top-right-index{top:62px;right:12px;}.bootstrap-select .status{background:#f0f0f0;clear:both;color:#999;font-size:12px;font-weight:500;line-height:1;margin-bottom:-5px;padding:10px 20px;}.img-center{margin:0 auto;display:inline;float:none;}#ribbon{overflow:hidden;padding:15px 15px 0 15px;position:relative;}#ribbon a{color:#777 !important;text-decoration:none !important;}#ribbon .breadcrumb{display:inline-block;margin:0;padding:0;background:none;vertical-align:top;}#ribbon .breadcrumb > .active,#ribbon .breadcrumb li{color:#aaa;}#ribbon .shortcut a{margin-left:10px;}.is-dialog #main{background:#fff;}form.form-horizontal .control-label{font-weight:normal;}.user-panel > .image img{width:45px;height:45px;}.panel-intro{margin-bottom:0;border:none;}.panel-intro > .panel-heading{padding:15px;padding-bottom:0;background:#e8edf0;border-color:#e8edf0;position:relative;}.panel-intro > .panel-heading .panel-lead{margin-bottom:15px;}.panel-intro > .panel-heading .panel-lead em{display:block;font-weight:bold;font-style:normal;}.panel-intro > .panel-heading .panel-title{height:25px;font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.panel-intro > .panel-heading .panel-control{height:42px;position:absolute;top:8px;right:8px;}.panel-intro > .panel-heading .panel-control .fa{font-size:14px;}.panel-intro > .panel-heading .nav-tabs{border-bottom:0;margin-bottom:0;}.panel-intro > .panel-heading .nav-tabs > li > a{margin-right:4px;color:#95a5a6;background-color:#d8e0e6;border:1px solid #e8edf0;border-bottom-color:transparent;}.panel-intro > .panel-heading .nav-tabs > li > a:hover,.panel-intro > .panel-heading .nav-tabs > li > a:focus{border:1px solid #e8edf0;color:#7b8a8b;background-color:#c9d4dc;}.panel-intro > .panel-heading .nav-tabs > li.active > a,.panel-intro > .panel-heading .nav-tabs > li.active > a:hover,.panel-intro > .panel-heading .nav-tabs > li.active > a:focus{color:#7b8a8b;background-color:#ffffff;border-bottom-color:transparent;cursor:default;}.panel-tabs .panel-heading{padding:12px 15px 12px 15px;}.panel-tabs .panel-heading .panel-lead{margin-bottom:0px;}.panel-nav .panel-heading{padding:0px;padding-bottom:0;background:#f1f4f6;border-color:#f1f4f6;}.panel-nav .nav-tabs > li > a{padding:12px 15px;background-color:#e8edf0;border:1px solid #f1f4f6;}.panel-nav .nav-tabs > li > a:hover,.panel-nav .nav-tabs > li > a:focus{border:1px solid #e8edf0;background-color:#e8edf0;}.panel-nav .nav-tabs > li.active > a,.panel-nav .nav-tabs > li.active > a:hover,.panel-nav .nav-tabs > li.active > a:focus{border-color:#f1f4f6;border-bottom-color:transparent;}.nav-addtabs{border:none;}.nav-addtabs.disable-top-badge > li > a > .pull-right-container{display:none;}.nav-addtabs > li{margin:0;}.nav-addtabs > li > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);margin:0;color:#95a5a6;}.nav-addtabs > li > a:hover,.nav-addtabs > li > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs > li > a i{margin-right:3px;}.nav-addtabs > li.active > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;color:#2c3e50;overflow:hidden;}.nav-addtabs > li.active > a:hover,.nav-addtabs > li.active > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;}.nav-addtabs > li .close-tab{font-size:10px;position:absolute;right:5px;top:50%;margin-top:-7px;z-index:100;cursor:hand;cursor:pointer;color:#fff;display:none;}.nav-addtabs .open > a:hover,.nav-addtabs .open > a:focus{border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs ul li{position:relative;}.nav-addtabs li:hover > .close-tab{display:block;}.main-sidebar .sidebar-form{overflow:visible;}.main-sidebar .sidebar-form .menuresult{z-index:999;position:absolute;top:34px;left:-1px;width:100%;max-height:250px;overflow:auto;margin:0;border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.main-sidebar .sidebar-form .menuresult a{border-top:1px solid #eee;background-color:#fff;border-bottom:1px solid #eee;margin-bottom:-1px;display:block;padding:10px 15px;color:#222d32;}.main-sidebar .sidebar-form .menuresult a:hover{background:#eee;}.input-group .sp_result_area{width:100%;}.sidebar-menu.show-submenu .treeview-menu{display:block;}.sidebar-menu > li .badge{margin-top:0;}.sidebar-collapse .user-panel > .image img{width:25px;height:25px;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:41px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{top:7px!important;height:17px;}}.fieldlist dd{display:block;margin:5px 0;}.fieldlist dd input{display:inline-block;width:300px;}.fieldlist dd input:first-child{width:110px;}.fieldlist dd ins{width:110px;display:inline-block;text-decoration:none;font-weight:bold;}.form-layer{height:100%;min-height:150px;min-width:300px;}.form-layer .form-body{width:100%;overflow:auto;top:0;position:absolute;z-index:10;bottom:50px;padding:15px;}.form-layer .form-footer{height:50px;line-height:50px;background-color:#ecf0f1;width:100%;position:absolute;z-index:200;bottom:0;margin:0;}.form-layer .form-footer .form-group{margin-left:0;margin-right:0;}#treeview .jstree-container-ul .jstree-node{display:block;clear:both;}#treeview .jstree-leaf:not(:first-child){float:left;background:none;margin-left:0;width:80px;clear:none;}#treeview .jstree-leaf{float:left;margin-left:0;padding-left:24px;width:80px;clear:none;color:#777;}#treeview .jstree-leaf > .jstree-icon,#treeview .jstree-leaf .jstree-themeicon{display:none;}#treeview .jstree-last{background-image:url("../img/32px.png");background-position:-292px -4px;background-repeat:repeat-y;}#treeview .jstree-children:before,#treeview .jstree-children:after{content:" ";display:table;}#treeview .jstree-children:after{clear:both;}#treeview .jstree-themeicon{display:none;}.fixed-table-container{border:none!important;}.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable]{display:inline-block;*display:inline;*zoom:1;}.nice-validator .note-editor .note-editing-area .note-editable{display:inherit;}.plupload-preview{padding:0 10px;margin-bottom:0;}.plupload-preview li{margin-top:15px;}.plupload-preview .thumbnail{margin-bottom:10px;}.plupload-preview a{display:block;}.plupload-preview a:first-child{height:90px;}.plupload-preview a img{height:80px;object-fit:cover;}.pjax-loader-bar .progress{position:fixed;top:0;left:0;height:2px;background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,0.7);-webkit-transition:width 0.4s ease;transition:width 0.4s ease;}.dropdown-menu.text-left a,.dropdown-menu.text-left li{text-align:left!important;}.bootstrap-table .fixed-table-toolbar .dropdown-menu{overflow:auto;}.toolbar{margin-top:10px;margin-bottom:10px;}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{line-height:inherit;}.fixed-table-toolbar .toolbar{margin-top:0;margin-bottom:0;}.bootstrap-table table tbody tr:first-child td .bs-checkbox{vertical-align:middle;}.bootstrap-table td.bs-checkbox{vertical-align:middle;}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{overflow:auto;top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:0 6px 6px 6px;-moz-background-clip:padding;border-radius:0 6px 6px 6px;background-clip:padding-box;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:6px 0 6px 6px;-moz-background-clip:padding;border-radius:6px 0 6px 6px;background-clip:padding-box;}.toast-primary{background-color:#48c9b0!important;}.toast-success{background-color:#18bc9c!important;}.toast-error{background-color:#e74c3c!important;}.toast-info{background-color:#5dade2!important;}.toast-warning{background-color:#f1c40f!important;}.toast-inverse{background-color:#34495e!important;}.toast-default{background-color:#bdc3c7!important;}#toast-container > div,#toast-container > div:hover{-webkit-box-shadow:0 0 3px #eee;-moz-box-shadow:0 0 3px #eee;box-shadow:0 0 3px #eee;}.layui-layer-fast{}.layui-layer-fast .layui-layer-title{background:#2c3e50!important;color:#fff!important;border-bottom:none;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin{top:0px;height:42px;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin > a{height:42px;line-height:42px;display:inline-block;}.layui-layer-fast.layui-layer-border{border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,0.3) !important;}.layui-layer-fast.layui-layer-iframe{overflow:visible;}.layui-layer-fast .layui-layer-moves{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}.layui-layer-fast .layui-layer-btn{text-align:center!important;padding:10px!important;background:#ecf0f1;overflow:hidden;}.layui-layer-fast .layui-layer-btn a{background-color:#95a5a6;border-color:#95a5a6;color:#fff!important;height:31px;margin-top:0;border:1px solid transparent;}.layui-layer-fast .layui-layer-btn .layui-layer-btn0{background-color:#18bc9c;border-color:#18bc9c;}.layui-layer-fast .layui-layer-footer{padding:8px 20px;background-color:#ecf0f1;height:auto;text-align:inherit!important;}.layui-layer-fast .layui-layer-setwin > a{background:none!important;}.layui-layer-fast .layui-layer-setwin > a cite{display:none;}.layui-layer-fast .layui-layer-setwin > a:after{content:"\e625";font-family:iconfont;font-style:normal;font-weight:normal;text-decoration:inherit;position:absolute;font-size:18px;color:#fff;margin:0;z-index:1;}.layui-layer-fast .layui-layer-setwin > a:hover{text-decoration:none!important;background:none!important;}.layui-layer-fast .layui-layer-setwin > a:focus{text-decoration:none!important;}.layui-layer-fast .layui-layer-setwin .layui-layer-min{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-min:after{content:"\e625";}.layui-layer-fast .layui-layer-setwin .layui-layer-max{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-max:after{content:"\e623";}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin:after{content:"\e624";}.layui-layer-fast .layui-layer-setwin .layui-layer-close1:after{content:"\e626";}.layui-layer-fast .layui-layer-setwin .layui-layer-close2,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover{background:url('../libs/layer/dist/theme/default/icon.png') no-repeat -149px -31px !important;top:-30px;right:-30px;}.layui-layer-fast .layui-layer-setwin .layui-layer-close2:after,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover:after{display:none;}.layui-layer-content{clear:both;}.layui-layer-fast-msg{min-width:100px;border-radius:2px;background-color:rgba(0,0,0,0.6);color:#fff;}.layui-layer-fast-msg .layui-layer-content{padding:12px 25px;text-align:center;}.n-bootstrap .input-group > .n-right{position:absolute;}@media (min-width:564px){body.is-dialog .daterangepicker{min-width:130px;}body.is-dialog .daterangepicker .ranges ul{width:130px;}}@media (max-width:480px){.nav-addtabs{display:none;}.fixed-table-toolbar .columns-right.btn-group{display:none;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}}@media (max-width:768px){.n-bootstrap .n-right{margin-top:0;top:-20px;position:absolute;left:0;text-align:right;width:100%;}.n-bootstrap .n-right .msg-wrap{position:relative;}.n-bootstrap .col-xs-12 > .n-right .msg-wrap{margin-right:15px;}}.radio > label,.checkbox > label{margin-right:10px;}.radio > label > input,.checkbox > label > input{margin:2px 0 0;}
\ No newline at end of file
+/*! * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter,Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block;}audio,canvas,progress,video{display:inline-block;vertical-align:baseline;}audio:not([controls]){display:none;height:0;}[hidden],template{display:none;}a{background-color:transparent;}a:active,a:hover{outline:0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}h1{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{overflow:visible;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}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;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important;}a,a:visited{text-decoration:underline;}a[href]:after{content:" (" attr(href) ")";}abbr[title]:after{content:" (" attr(title) ")";}a[href^="#"]:after,a[href^="javascript:"]:after{content:"";}pre,blockquote{border:1px solid #999;page-break-inside:avoid;}thead{display:table-header-group;}tr,img{page-break-inside:avoid;}img{max-width:100% !important;}p,h2,h3{orphans:3;widows:3;}h2,h3{page-break-after:avoid;}.navbar{display:none;}.btn > .caret,.dropup > .btn > .caret{border-top-color:#000 !important;}.label{border:1px solid #000;}.table{border-collapse:collapse !important;}.table td,.table th{background-color:#fff !important;}.table-bordered th,.table-bordered td{border:1px solid #ddd !important;}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg');}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.glyphicon-asterisk:before{content:"\002a";}.glyphicon-plus:before{content:"\002b";}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac";}.glyphicon-minus:before{content:"\2212";}.glyphicon-cloud:before{content:"\2601";}.glyphicon-envelope:before{content:"\2709";}.glyphicon-pencil:before{content:"\270f";}.glyphicon-glass:before{content:"\e001";}.glyphicon-music:before{content:"\e002";}.glyphicon-search:before{content:"\e003";}.glyphicon-heart:before{content:"\e005";}.glyphicon-star:before{content:"\e006";}.glyphicon-star-empty:before{content:"\e007";}.glyphicon-user:before{content:"\e008";}.glyphicon-film:before{content:"\e009";}.glyphicon-th-large:before{content:"\e010";}.glyphicon-th:before{content:"\e011";}.glyphicon-th-list:before{content:"\e012";}.glyphicon-ok:before{content:"\e013";}.glyphicon-remove:before{content:"\e014";}.glyphicon-zoom-in:before{content:"\e015";}.glyphicon-zoom-out:before{content:"\e016";}.glyphicon-off:before{content:"\e017";}.glyphicon-signal:before{content:"\e018";}.glyphicon-cog:before{content:"\e019";}.glyphicon-trash:before{content:"\e020";}.glyphicon-home:before{content:"\e021";}.glyphicon-file:before{content:"\e022";}.glyphicon-time:before{content:"\e023";}.glyphicon-road:before{content:"\e024";}.glyphicon-download-alt:before{content:"\e025";}.glyphicon-download:before{content:"\e026";}.glyphicon-upload:before{content:"\e027";}.glyphicon-inbox:before{content:"\e028";}.glyphicon-play-circle:before{content:"\e029";}.glyphicon-repeat:before{content:"\e030";}.glyphicon-refresh:before{content:"\e031";}.glyphicon-list-alt:before{content:"\e032";}.glyphicon-lock:before{content:"\e033";}.glyphicon-flag:before{content:"\e034";}.glyphicon-headphones:before{content:"\e035";}.glyphicon-volume-off:before{content:"\e036";}.glyphicon-volume-down:before{content:"\e037";}.glyphicon-volume-up:before{content:"\e038";}.glyphicon-qrcode:before{content:"\e039";}.glyphicon-barcode:before{content:"\e040";}.glyphicon-tag:before{content:"\e041";}.glyphicon-tags:before{content:"\e042";}.glyphicon-book:before{content:"\e043";}.glyphicon-bookmark:before{content:"\e044";}.glyphicon-print:before{content:"\e045";}.glyphicon-camera:before{content:"\e046";}.glyphicon-font:before{content:"\e047";}.glyphicon-bold:before{content:"\e048";}.glyphicon-italic:before{content:"\e049";}.glyphicon-text-height:before{content:"\e050";}.glyphicon-text-width:before{content:"\e051";}.glyphicon-align-left:before{content:"\e052";}.glyphicon-align-center:before{content:"\e053";}.glyphicon-align-right:before{content:"\e054";}.glyphicon-align-justify:before{content:"\e055";}.glyphicon-list:before{content:"\e056";}.glyphicon-indent-left:before{content:"\e057";}.glyphicon-indent-right:before{content:"\e058";}.glyphicon-facetime-video:before{content:"\e059";}.glyphicon-picture:before{content:"\e060";}.glyphicon-map-marker:before{content:"\e062";}.glyphicon-adjust:before{content:"\e063";}.glyphicon-tint:before{content:"\e064";}.glyphicon-edit:before{content:"\e065";}.glyphicon-share:before{content:"\e066";}.glyphicon-check:before{content:"\e067";}.glyphicon-move:before{content:"\e068";}.glyphicon-step-backward:before{content:"\e069";}.glyphicon-fast-backward:before{content:"\e070";}.glyphicon-backward:before{content:"\e071";}.glyphicon-play:before{content:"\e072";}.glyphicon-pause:before{content:"\e073";}.glyphicon-stop:before{content:"\e074";}.glyphicon-forward:before{content:"\e075";}.glyphicon-fast-forward:before{content:"\e076";}.glyphicon-step-forward:before{content:"\e077";}.glyphicon-eject:before{content:"\e078";}.glyphicon-chevron-left:before{content:"\e079";}.glyphicon-chevron-right:before{content:"\e080";}.glyphicon-plus-sign:before{content:"\e081";}.glyphicon-minus-sign:before{content:"\e082";}.glyphicon-remove-sign:before{content:"\e083";}.glyphicon-ok-sign:before{content:"\e084";}.glyphicon-question-sign:before{content:"\e085";}.glyphicon-info-sign:before{content:"\e086";}.glyphicon-screenshot:before{content:"\e087";}.glyphicon-remove-circle:before{content:"\e088";}.glyphicon-ok-circle:before{content:"\e089";}.glyphicon-ban-circle:before{content:"\e090";}.glyphicon-arrow-left:before{content:"\e091";}.glyphicon-arrow-right:before{content:"\e092";}.glyphicon-arrow-up:before{content:"\e093";}.glyphicon-arrow-down:before{content:"\e094";}.glyphicon-share-alt:before{content:"\e095";}.glyphicon-resize-full:before{content:"\e096";}.glyphicon-resize-small:before{content:"\e097";}.glyphicon-exclamation-sign:before{content:"\e101";}.glyphicon-gift:before{content:"\e102";}.glyphicon-leaf:before{content:"\e103";}.glyphicon-fire:before{content:"\e104";}.glyphicon-eye-open:before{content:"\e105";}.glyphicon-eye-close:before{content:"\e106";}.glyphicon-warning-sign:before{content:"\e107";}.glyphicon-plane:before{content:"\e108";}.glyphicon-calendar:before{content:"\e109";}.glyphicon-random:before{content:"\e110";}.glyphicon-comment:before{content:"\e111";}.glyphicon-magnet:before{content:"\e112";}.glyphicon-chevron-up:before{content:"\e113";}.glyphicon-chevron-down:before{content:"\e114";}.glyphicon-retweet:before{content:"\e115";}.glyphicon-shopping-cart:before{content:"\e116";}.glyphicon-folder-close:before{content:"\e117";}.glyphicon-folder-open:before{content:"\e118";}.glyphicon-resize-vertical:before{content:"\e119";}.glyphicon-resize-horizontal:before{content:"\e120";}.glyphicon-hdd:before{content:"\e121";}.glyphicon-bullhorn:before{content:"\e122";}.glyphicon-bell:before{content:"\e123";}.glyphicon-certificate:before{content:"\e124";}.glyphicon-thumbs-up:before{content:"\e125";}.glyphicon-thumbs-down:before{content:"\e126";}.glyphicon-hand-right:before{content:"\e127";}.glyphicon-hand-left:before{content:"\e128";}.glyphicon-hand-up:before{content:"\e129";}.glyphicon-hand-down:before{content:"\e130";}.glyphicon-circle-arrow-right:before{content:"\e131";}.glyphicon-circle-arrow-left:before{content:"\e132";}.glyphicon-circle-arrow-up:before{content:"\e133";}.glyphicon-circle-arrow-down:before{content:"\e134";}.glyphicon-globe:before{content:"\e135";}.glyphicon-wrench:before{content:"\e136";}.glyphicon-tasks:before{content:"\e137";}.glyphicon-filter:before{content:"\e138";}.glyphicon-briefcase:before{content:"\e139";}.glyphicon-fullscreen:before{content:"\e140";}.glyphicon-dashboard:before{content:"\e141";}.glyphicon-paperclip:before{content:"\e142";}.glyphicon-heart-empty:before{content:"\e143";}.glyphicon-link:before{content:"\e144";}.glyphicon-phone:before{content:"\e145";}.glyphicon-pushpin:before{content:"\e146";}.glyphicon-usd:before{content:"\e148";}.glyphicon-gbp:before{content:"\e149";}.glyphicon-sort:before{content:"\e150";}.glyphicon-sort-by-alphabet:before{content:"\e151";}.glyphicon-sort-by-alphabet-alt:before{content:"\e152";}.glyphicon-sort-by-order:before{content:"\e153";}.glyphicon-sort-by-order-alt:before{content:"\e154";}.glyphicon-sort-by-attributes:before{content:"\e155";}.glyphicon-sort-by-attributes-alt:before{content:"\e156";}.glyphicon-unchecked:before{content:"\e157";}.glyphicon-expand:before{content:"\e158";}.glyphicon-collapse-down:before{content:"\e159";}.glyphicon-collapse-up:before{content:"\e160";}.glyphicon-log-in:before{content:"\e161";}.glyphicon-flash:before{content:"\e162";}.glyphicon-log-out:before{content:"\e163";}.glyphicon-new-window:before{content:"\e164";}.glyphicon-record:before{content:"\e165";}.glyphicon-save:before{content:"\e166";}.glyphicon-open:before{content:"\e167";}.glyphicon-saved:before{content:"\e168";}.glyphicon-import:before{content:"\e169";}.glyphicon-export:before{content:"\e170";}.glyphicon-send:before{content:"\e171";}.glyphicon-floppy-disk:before{content:"\e172";}.glyphicon-floppy-saved:before{content:"\e173";}.glyphicon-floppy-remove:before{content:"\e174";}.glyphicon-floppy-save:before{content:"\e175";}.glyphicon-floppy-open:before{content:"\e176";}.glyphicon-credit-card:before{content:"\e177";}.glyphicon-transfer:before{content:"\e178";}.glyphicon-cutlery:before{content:"\e179";}.glyphicon-header:before{content:"\e180";}.glyphicon-compressed:before{content:"\e181";}.glyphicon-earphone:before{content:"\e182";}.glyphicon-phone-alt:before{content:"\e183";}.glyphicon-tower:before{content:"\e184";}.glyphicon-stats:before{content:"\e185";}.glyphicon-sd-video:before{content:"\e186";}.glyphicon-hd-video:before{content:"\e187";}.glyphicon-subtitles:before{content:"\e188";}.glyphicon-sound-stereo:before{content:"\e189";}.glyphicon-sound-dolby:before{content:"\e190";}.glyphicon-sound-5-1:before{content:"\e191";}.glyphicon-sound-6-1:before{content:"\e192";}.glyphicon-sound-7-1:before{content:"\e193";}.glyphicon-copyright-mark:before{content:"\e194";}.glyphicon-registration-mark:before{content:"\e195";}.glyphicon-cloud-download:before{content:"\e197";}.glyphicon-cloud-upload:before{content:"\e198";}.glyphicon-tree-conifer:before{content:"\e199";}.glyphicon-tree-deciduous:before{content:"\e200";}.glyphicon-cd:before{content:"\e201";}.glyphicon-save-file:before{content:"\e202";}.glyphicon-open-file:before{content:"\e203";}.glyphicon-level-up:before{content:"\e204";}.glyphicon-copy:before{content:"\e205";}.glyphicon-paste:before{content:"\e206";}.glyphicon-alert:before{content:"\e209";}.glyphicon-equalizer:before{content:"\e210";}.glyphicon-king:before{content:"\e211";}.glyphicon-queen:before{content:"\e212";}.glyphicon-pawn:before{content:"\e213";}.glyphicon-bishop:before{content:"\e214";}.glyphicon-knight:before{content:"\e215";}.glyphicon-baby-formula:before{content:"\e216";}.glyphicon-tent:before{content:"\26fa";}.glyphicon-blackboard:before{content:"\e218";}.glyphicon-bed:before{content:"\e219";}.glyphicon-apple:before{content:"\f8ff";}.glyphicon-erase:before{content:"\e221";}.glyphicon-hourglass:before{content:"\231b";}.glyphicon-lamp:before{content:"\e223";}.glyphicon-duplicate:before{content:"\e224";}.glyphicon-piggy-bank:before{content:"\e225";}.glyphicon-scissors:before{content:"\e226";}.glyphicon-bitcoin:before{content:"\e227";}.glyphicon-btc:before{content:"\e227";}.glyphicon-xbt:before{content:"\e227";}.glyphicon-yen:before{content:"\00a5";}.glyphicon-jpy:before{content:"\00a5";}.glyphicon-ruble:before{content:"\20bd";}.glyphicon-rub:before{content:"\20bd";}.glyphicon-scale:before{content:"\e230";}.glyphicon-ice-lolly:before{content:"\e231";}.glyphicon-ice-lolly-tasted:before{content:"\e232";}.glyphicon-education:before{content:"\e233";}.glyphicon-option-horizontal:before{content:"\e234";}.glyphicon-option-vertical:before{content:"\e235";}.glyphicon-menu-hamburger:before{content:"\e236";}.glyphicon-modal-window:before{content:"\e237";}.glyphicon-oil:before{content:"\e238";}.glyphicon-grain:before{content:"\e239";}.glyphicon-sunglasses:before{content:"\e240";}.glyphicon-text-size:before{content:"\e241";}.glyphicon-text-color:before{content:"\e242";}.glyphicon-text-background:before{content:"\e243";}.glyphicon-object-align-top:before{content:"\e244";}.glyphicon-object-align-bottom:before{content:"\e245";}.glyphicon-object-align-horizontal:before{content:"\e246";}.glyphicon-object-align-left:before{content:"\e247";}.glyphicon-object-align-vertical:before{content:"\e248";}.glyphicon-object-align-right:before{content:"\e249";}.glyphicon-triangle-right:before{content:"\e250";}.glyphicon-triangle-left:before{content:"\e251";}.glyphicon-triangle-bottom:before{content:"\e252";}.glyphicon-triangle-top:before{content:"\e253";}.glyphicon-console:before{content:"\e254";}.glyphicon-superscript:before{content:"\e255";}.glyphicon-subscript:before{content:"\e256";}.glyphicon-menu-left:before{content:"\e257";}.glyphicon-menu-right:before{content:"\e258";}.glyphicon-menu-down:before{content:"\e259";}.glyphicon-menu-up:before{content:"\e260";}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0);}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.42857143;color:#333333;background-color:#fff;}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;}a{color:#2c3e50;text-decoration:none;}a:hover,a:focus{color:#11181f;text-decoration:underline;}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}figure{margin:0;}img{vertical-align:middle;}.img-responsive,.thumbnail > img,.thumbnail a > img,.carousel-inner > .item > img,.carousel-inner > .item > a > img{display:block;max-width:100%;height:auto;}.img-rounded{border-radius:5px;}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto;}.img-circle{border-radius:50%;}hr{margin-top:17px;margin-bottom:17px;border:0;border-top:1px solid #eeeeee;}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;}[role="button"]{cursor:pointer;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777777;}h1,.h1,h2,.h2,h3,.h3{margin-top:17px;margin-bottom:8.5px;}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%;}h4,.h4,h5,.h5,h6,.h6{margin-top:8.5px;margin-bottom:8.5px;}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%;}h1,.h1{font-size:31px;}h2,.h2{font-size:25px;}h3,.h3{font-size:21px;}h4,.h4{font-size:15px;}h5,.h5{font-size:12px;}h6,.h6{font-size:11px;}p{margin:0 0 8.5px;}.lead{margin-bottom:17px;font-size:13px;font-weight:300;line-height:1.4;}@media (min-width:768px){.lead{font-size:18px;}}small,.small{font-size:91%;}mark,.mark{background-color:#fcf8e3;padding:.2em;}.text-left{text-align:left;}.text-right{text-align:right;}.text-center{text-align:center;}.text-justify{text-align:justify;}.text-nowrap{white-space:nowrap;}.text-lowercase{text-transform:lowercase;}.text-uppercase{text-transform:uppercase;}.text-capitalize{text-transform:capitalize;}.text-muted{color:#777777;}.text-primary{color:#2c3e50;}a.text-primary:hover,a.text-primary:focus{color:#1a242f;}.text-success{color:#18bc9c;}a.text-success:hover,a.text-success:focus{color:#128f76;}.text-info{color:#3498db;}a.text-info:hover,a.text-info:focus{color:#217dbb;}.text-warning{color:#f39c12;}a.text-warning:hover,a.text-warning:focus{color:#c87f0a;}.text-danger{color:#e74c3c;}a.text-danger:hover,a.text-danger:focus{color:#d62c1a;}.bg-primary{color:#fff;background-color:#2c3e50;}a.bg-primary:hover,a.bg-primary:focus{background-color:#1a242f;}.bg-success{background-color:#dff0d8;}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3;}.bg-info{background-color:#d9edf7;}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee;}.bg-warning{background-color:#fcf8e3;}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5;}.bg-danger{background-color:#f2dede;}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9;}.page-header{padding-bottom:7.5px;margin:34px 0 17px;border-bottom:1px solid #eeeeee;}ul,ol{margin-top:0;margin-bottom:8.5px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:0;}.list-unstyled{padding-left:0;list-style:none;}.list-inline{padding-left:0;list-style:none;margin-left:-5px;}.list-inline > li{display:inline-block;padding-left:5px;padding-right:5px;}dl{margin-top:0;margin-bottom:17px;}dt,dd{line-height:1.42857143;}dt{font-weight:bold;}dd{margin-left:0;}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.dl-horizontal dd{margin-left:180px;}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777777;}.initialism{font-size:90%;text-transform:uppercase;}blockquote{padding:8.5px 17px;margin:0 0 17px;font-size:15px;border-left:5px solid #eeeeee;}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0;}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777777;}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0';}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right;}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:'';}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014';}address{margin-bottom:17px;font-style:normal;line-height:1.42857143;}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px;}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none;}pre{display:block;padding:8px;margin:0 0 8.5px;font-size:11px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px;}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0;}.pre-scrollable{max-height:340px;overflow-y:scroll;}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}@media (min-width:768px){.container{width:750px;}}@media (min-width:992px){.container{width:970px;}}@media (min-width:1200px){.container{width:1170px;}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}.row{margin-left:-15px;margin-right:-15px;}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left;}.col-xs-12{width:100%;}.col-xs-11{width:91.66666667%;}.col-xs-10{width:83.33333333%;}.col-xs-9{width:75%;}.col-xs-8{width:66.66666667%;}.col-xs-7{width:58.33333333%;}.col-xs-6{width:50%;}.col-xs-5{width:41.66666667%;}.col-xs-4{width:33.33333333%;}.col-xs-3{width:25%;}.col-xs-2{width:16.66666667%;}.col-xs-1{width:8.33333333%;}.col-xs-pull-12{right:100%;}.col-xs-pull-11{right:91.66666667%;}.col-xs-pull-10{right:83.33333333%;}.col-xs-pull-9{right:75%;}.col-xs-pull-8{right:66.66666667%;}.col-xs-pull-7{right:58.33333333%;}.col-xs-pull-6{right:50%;}.col-xs-pull-5{right:41.66666667%;}.col-xs-pull-4{right:33.33333333%;}.col-xs-pull-3{right:25%;}.col-xs-pull-2{right:16.66666667%;}.col-xs-pull-1{right:8.33333333%;}.col-xs-pull-0{right:auto;}.col-xs-push-12{left:100%;}.col-xs-push-11{left:91.66666667%;}.col-xs-push-10{left:83.33333333%;}.col-xs-push-9{left:75%;}.col-xs-push-8{left:66.66666667%;}.col-xs-push-7{left:58.33333333%;}.col-xs-push-6{left:50%;}.col-xs-push-5{left:41.66666667%;}.col-xs-push-4{left:33.33333333%;}.col-xs-push-3{left:25%;}.col-xs-push-2{left:16.66666667%;}.col-xs-push-1{left:8.33333333%;}.col-xs-push-0{left:auto;}.col-xs-offset-12{margin-left:100%;}.col-xs-offset-11{margin-left:91.66666667%;}.col-xs-offset-10{margin-left:83.33333333%;}.col-xs-offset-9{margin-left:75%;}.col-xs-offset-8{margin-left:66.66666667%;}.col-xs-offset-7{margin-left:58.33333333%;}.col-xs-offset-6{margin-left:50%;}.col-xs-offset-5{margin-left:41.66666667%;}.col-xs-offset-4{margin-left:33.33333333%;}.col-xs-offset-3{margin-left:25%;}.col-xs-offset-2{margin-left:16.66666667%;}.col-xs-offset-1{margin-left:8.33333333%;}.col-xs-offset-0{margin-left:0%;}@media (min-width:768px){.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{float:left;}.col-sm-12{width:100%;}.col-sm-11{width:91.66666667%;}.col-sm-10{width:83.33333333%;}.col-sm-9{width:75%;}.col-sm-8{width:66.66666667%;}.col-sm-7{width:58.33333333%;}.col-sm-6{width:50%;}.col-sm-5{width:41.66666667%;}.col-sm-4{width:33.33333333%;}.col-sm-3{width:25%;}.col-sm-2{width:16.66666667%;}.col-sm-1{width:8.33333333%;}.col-sm-pull-12{right:100%;}.col-sm-pull-11{right:91.66666667%;}.col-sm-pull-10{right:83.33333333%;}.col-sm-pull-9{right:75%;}.col-sm-pull-8{right:66.66666667%;}.col-sm-pull-7{right:58.33333333%;}.col-sm-pull-6{right:50%;}.col-sm-pull-5{right:41.66666667%;}.col-sm-pull-4{right:33.33333333%;}.col-sm-pull-3{right:25%;}.col-sm-pull-2{right:16.66666667%;}.col-sm-pull-1{right:8.33333333%;}.col-sm-pull-0{right:auto;}.col-sm-push-12{left:100%;}.col-sm-push-11{left:91.66666667%;}.col-sm-push-10{left:83.33333333%;}.col-sm-push-9{left:75%;}.col-sm-push-8{left:66.66666667%;}.col-sm-push-7{left:58.33333333%;}.col-sm-push-6{left:50%;}.col-sm-push-5{left:41.66666667%;}.col-sm-push-4{left:33.33333333%;}.col-sm-push-3{left:25%;}.col-sm-push-2{left:16.66666667%;}.col-sm-push-1{left:8.33333333%;}.col-sm-push-0{left:auto;}.col-sm-offset-12{margin-left:100%;}.col-sm-offset-11{margin-left:91.66666667%;}.col-sm-offset-10{margin-left:83.33333333%;}.col-sm-offset-9{margin-left:75%;}.col-sm-offset-8{margin-left:66.66666667%;}.col-sm-offset-7{margin-left:58.33333333%;}.col-sm-offset-6{margin-left:50%;}.col-sm-offset-5{margin-left:41.66666667%;}.col-sm-offset-4{margin-left:33.33333333%;}.col-sm-offset-3{margin-left:25%;}.col-sm-offset-2{margin-left:16.66666667%;}.col-sm-offset-1{margin-left:8.33333333%;}.col-sm-offset-0{margin-left:0%;}}@media (min-width:992px){.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{float:left;}.col-md-12{width:100%;}.col-md-11{width:91.66666667%;}.col-md-10{width:83.33333333%;}.col-md-9{width:75%;}.col-md-8{width:66.66666667%;}.col-md-7{width:58.33333333%;}.col-md-6{width:50%;}.col-md-5{width:41.66666667%;}.col-md-4{width:33.33333333%;}.col-md-3{width:25%;}.col-md-2{width:16.66666667%;}.col-md-1{width:8.33333333%;}.col-md-pull-12{right:100%;}.col-md-pull-11{right:91.66666667%;}.col-md-pull-10{right:83.33333333%;}.col-md-pull-9{right:75%;}.col-md-pull-8{right:66.66666667%;}.col-md-pull-7{right:58.33333333%;}.col-md-pull-6{right:50%;}.col-md-pull-5{right:41.66666667%;}.col-md-pull-4{right:33.33333333%;}.col-md-pull-3{right:25%;}.col-md-pull-2{right:16.66666667%;}.col-md-pull-1{right:8.33333333%;}.col-md-pull-0{right:auto;}.col-md-push-12{left:100%;}.col-md-push-11{left:91.66666667%;}.col-md-push-10{left:83.33333333%;}.col-md-push-9{left:75%;}.col-md-push-8{left:66.66666667%;}.col-md-push-7{left:58.33333333%;}.col-md-push-6{left:50%;}.col-md-push-5{left:41.66666667%;}.col-md-push-4{left:33.33333333%;}.col-md-push-3{left:25%;}.col-md-push-2{left:16.66666667%;}.col-md-push-1{left:8.33333333%;}.col-md-push-0{left:auto;}.col-md-offset-12{margin-left:100%;}.col-md-offset-11{margin-left:91.66666667%;}.col-md-offset-10{margin-left:83.33333333%;}.col-md-offset-9{margin-left:75%;}.col-md-offset-8{margin-left:66.66666667%;}.col-md-offset-7{margin-left:58.33333333%;}.col-md-offset-6{margin-left:50%;}.col-md-offset-5{margin-left:41.66666667%;}.col-md-offset-4{margin-left:33.33333333%;}.col-md-offset-3{margin-left:25%;}.col-md-offset-2{margin-left:16.66666667%;}.col-md-offset-1{margin-left:8.33333333%;}.col-md-offset-0{margin-left:0%;}}@media (min-width:1200px){.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{float:left;}.col-lg-12{width:100%;}.col-lg-11{width:91.66666667%;}.col-lg-10{width:83.33333333%;}.col-lg-9{width:75%;}.col-lg-8{width:66.66666667%;}.col-lg-7{width:58.33333333%;}.col-lg-6{width:50%;}.col-lg-5{width:41.66666667%;}.col-lg-4{width:33.33333333%;}.col-lg-3{width:25%;}.col-lg-2{width:16.66666667%;}.col-lg-1{width:8.33333333%;}.col-lg-pull-12{right:100%;}.col-lg-pull-11{right:91.66666667%;}.col-lg-pull-10{right:83.33333333%;}.col-lg-pull-9{right:75%;}.col-lg-pull-8{right:66.66666667%;}.col-lg-pull-7{right:58.33333333%;}.col-lg-pull-6{right:50%;}.col-lg-pull-5{right:41.66666667%;}.col-lg-pull-4{right:33.33333333%;}.col-lg-pull-3{right:25%;}.col-lg-pull-2{right:16.66666667%;}.col-lg-pull-1{right:8.33333333%;}.col-lg-pull-0{right:auto;}.col-lg-push-12{left:100%;}.col-lg-push-11{left:91.66666667%;}.col-lg-push-10{left:83.33333333%;}.col-lg-push-9{left:75%;}.col-lg-push-8{left:66.66666667%;}.col-lg-push-7{left:58.33333333%;}.col-lg-push-6{left:50%;}.col-lg-push-5{left:41.66666667%;}.col-lg-push-4{left:33.33333333%;}.col-lg-push-3{left:25%;}.col-lg-push-2{left:16.66666667%;}.col-lg-push-1{left:8.33333333%;}.col-lg-push-0{left:auto;}.col-lg-offset-12{margin-left:100%;}.col-lg-offset-11{margin-left:91.66666667%;}.col-lg-offset-10{margin-left:83.33333333%;}.col-lg-offset-9{margin-left:75%;}.col-lg-offset-8{margin-left:66.66666667%;}.col-lg-offset-7{margin-left:58.33333333%;}.col-lg-offset-6{margin-left:50%;}.col-lg-offset-5{margin-left:41.66666667%;}.col-lg-offset-4{margin-left:33.33333333%;}.col-lg-offset-3{margin-left:25%;}.col-lg-offset-2{margin-left:16.66666667%;}.col-lg-offset-1{margin-left:8.33333333%;}.col-lg-offset-0{margin-left:0%;}}table{background-color:transparent;}caption{padding-top:8px;padding-bottom:8px;color:#777777;text-align:left;}th{text-align:left;}.table{width:100%;max-width:100%;margin-bottom:17px;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd;}.table > thead > tr > th{vertical-align:bottom;border-bottom:2px solid #ddd;}.table > caption + thead > tr:first-child > th,.table > colgroup + thead > tr:first-child > th,.table > thead:first-child > tr:first-child > th,.table > caption + thead > tr:first-child > td,.table > colgroup + thead > tr:first-child > td,.table > thead:first-child > tr:first-child > td{border-top:0;}.table > tbody + tbody{border-top:2px solid #ddd;}.table .table{background-color:#fff;}.table-condensed > thead > tr > th,.table-condensed > tbody > tr > th,.table-condensed > tfoot > tr > th,.table-condensed > thead > tr > td,.table-condensed > tbody > tr > td,.table-condensed > tfoot > tr > td{padding:5px;}.table-bordered{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.table-striped > tbody > tr:nth-of-type(odd){background-color:#f9f9f9;}.table-hover > tbody > tr:hover{background-color:#f5f5f5;}table col[class*="col-"]{position:static;float:none;display:table-column;}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell;}.table > thead > tr > td.active,.table > tbody > tr > td.active,.table > tfoot > tr > td.active,.table > thead > tr > th.active,.table > tbody > tr > th.active,.table > tfoot > tr > th.active,.table > thead > tr.active > td,.table > tbody > tr.active > td,.table > tfoot > tr.active > td,.table > thead > tr.active > th,.table > tbody > tr.active > th,.table > tfoot > tr.active > th{background-color:#f5f5f5;}.table-hover > tbody > tr > td.active:hover,.table-hover > tbody > tr > th.active:hover,.table-hover > tbody > tr.active:hover > td,.table-hover > tbody > tr:hover > .active,.table-hover > tbody > tr.active:hover > th{background-color:#e8e8e8;}.table > thead > tr > td.success,.table > tbody > tr > td.success,.table > tfoot > tr > td.success,.table > thead > tr > th.success,.table > tbody > tr > th.success,.table > tfoot > tr > th.success,.table > thead > tr.success > td,.table > tbody > tr.success > td,.table > tfoot > tr.success > td,.table > thead > tr.success > th,.table > tbody > tr.success > th,.table > tfoot > tr.success > th{background-color:#dff0d8;}.table-hover > tbody > tr > td.success:hover,.table-hover > tbody > tr > th.success:hover,.table-hover > tbody > tr.success:hover > td,.table-hover > tbody > tr:hover > .success,.table-hover > tbody > tr.success:hover > th{background-color:#d0e9c6;}.table > thead > tr > td.info,.table > tbody > tr > td.info,.table > tfoot > tr > td.info,.table > thead > tr > th.info,.table > tbody > tr > th.info,.table > tfoot > tr > th.info,.table > thead > tr.info > td,.table > tbody > tr.info > td,.table > tfoot > tr.info > td,.table > thead > tr.info > th,.table > tbody > tr.info > th,.table > tfoot > tr.info > th{background-color:#d9edf7;}.table-hover > tbody > tr > td.info:hover,.table-hover > tbody > tr > th.info:hover,.table-hover > tbody > tr.info:hover > td,.table-hover > tbody > tr:hover > .info,.table-hover > tbody > tr.info:hover > th{background-color:#c4e3f3;}.table > thead > tr > td.warning,.table > tbody > tr > td.warning,.table > tfoot > tr > td.warning,.table > thead > tr > th.warning,.table > tbody > tr > th.warning,.table > tfoot > tr > th.warning,.table > thead > tr.warning > td,.table > tbody > tr.warning > td,.table > tfoot > tr.warning > td,.table > thead > tr.warning > th,.table > tbody > tr.warning > th,.table > tfoot > tr.warning > th{background-color:#fcf8e3;}.table-hover > tbody > tr > td.warning:hover,.table-hover > tbody > tr > th.warning:hover,.table-hover > tbody > tr.warning:hover > td,.table-hover > tbody > tr:hover > .warning,.table-hover > tbody > tr.warning:hover > th{background-color:#faf2cc;}.table > thead > tr > td.danger,.table > tbody > tr > td.danger,.table > tfoot > tr > td.danger,.table > thead > tr > th.danger,.table > tbody > tr > th.danger,.table > tfoot > tr > th.danger,.table > thead > tr.danger > td,.table > tbody > tr.danger > td,.table > tfoot > tr.danger > td,.table > thead > tr.danger > th,.table > tbody > tr.danger > th,.table > tfoot > tr.danger > th{background-color:#f2dede;}.table-hover > tbody > tr > td.danger:hover,.table-hover > tbody > tr > th.danger:hover,.table-hover > tbody > tr.danger:hover > td,.table-hover > tbody > tr:hover > .danger,.table-hover > tbody > tr.danger:hover > th{background-color:#ebcccc;}.table-responsive{overflow-x:auto;min-height:0.01%;}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:12.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;}.table-responsive > .table{margin-bottom:0;}.table-responsive > .table > thead > tr > th,.table-responsive > .table > tbody > tr > th,.table-responsive > .table > tfoot > tr > th,.table-responsive > .table > thead > tr > td,.table-responsive > .table > tbody > tr > td,.table-responsive > .table > tfoot > tr > td{white-space:nowrap;}.table-responsive > .table-bordered{border:0;}.table-responsive > .table-bordered > thead > tr > th:first-child,.table-responsive > .table-bordered > tbody > tr > th:first-child,.table-responsive > .table-bordered > tfoot > tr > th:first-child,.table-responsive > .table-bordered > thead > tr > td:first-child,.table-responsive > .table-bordered > tbody > tr > td:first-child,.table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.table-responsive > .table-bordered > thead > tr > th:last-child,.table-responsive > .table-bordered > tbody > tr > th:last-child,.table-responsive > .table-bordered > tfoot > tr > th:last-child,.table-responsive > .table-bordered > thead > tr > td:last-child,.table-responsive > .table-bordered > tbody > tr > td:last-child,.table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.table-responsive > .table-bordered > tbody > tr:last-child > th,.table-responsive > .table-bordered > tfoot > tr:last-child > th,.table-responsive > .table-bordered > tbody > tr:last-child > td,.table-responsive > .table-bordered > tfoot > tr:last-child > td{border-bottom:0;}}fieldset{padding:0;margin:0;border:0;min-width:0;}legend{display:block;width:100%;padding:0;margin-bottom:17px;font-size:18px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold;}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal;}input[type="file"]{display:block;}input[type="range"]{display:block;width:100%;}select[multiple],select[size]{height:auto;}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}output{display:block;padding-top:7px;font-size:12px;line-height:1.42857143;color:#555555;}.form-control{display:block;width:100%;height:31px;padding:6px 12px;font-size:12px;line-height:1.42857143;color:#555555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);}.form-control::-moz-placeholder{color:#999;opacity:1;}.form-control:-ms-input-placeholder{color:#999;}.form-control::-webkit-input-placeholder{color:#999;}.form-control::-ms-expand{border:0;background-color:transparent;}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1;}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed;}textarea.form-control{height:auto;}input[type="search"]{-webkit-appearance:none;}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:31px;}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:28px;}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:42px;}}.form-group{margin-bottom:15px;}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px;}.radio label,.checkbox label{min-height:17px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer;}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9;}.radio + .radio,.checkbox + .checkbox{margin-top:-5px;}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer;}.radio-inline + .radio-inline,.checkbox-inline + .checkbox-inline{margin-top:0;margin-left:10px;}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed;}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed;}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:29px;}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0;}.input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-sm{height:28px;line-height:28px;}textarea.input-sm,select[multiple].input-sm{height:auto;}.form-group-sm .form-control{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.form-group-sm select.form-control{height:28px;line-height:28px;}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto;}.form-group-sm .form-control-static{height:28px;min-height:28px;padding:6px 10px;font-size:11px;line-height:1.5;}.input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-lg{height:42px;line-height:42px;}textarea.input-lg,select[multiple].input-lg{height:auto;}.form-group-lg .form-control{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.form-group-lg select.form-control{height:42px;line-height:42px;}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto;}.form-group-lg .form-control-static{height:42px;min-height:32px;padding:11px 16px;font-size:15px;line-height:1.3333333;}.has-feedback{position:relative;}.has-feedback .form-control{padding-right:38.75px;}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:31px;height:31px;line-height:31px;text-align:center;pointer-events:none;}.input-lg + .form-control-feedback,.input-group-lg + .form-control-feedback,.form-group-lg .form-control + .form-control-feedback{width:42px;height:42px;line-height:42px;}.input-sm + .form-control-feedback,.input-group-sm + .form-control-feedback,.form-group-sm .form-control + .form-control-feedback{width:28px;height:28px;line-height:28px;}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#18bc9c;}.has-success .form-control{border-color:#18bc9c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-success .form-control:focus{border-color:#128f76;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;}.has-success .input-group-addon{color:#18bc9c;border-color:#18bc9c;background-color:#dff0d8;}.has-success .form-control-feedback{color:#18bc9c;}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f39c12;}.has-warning .form-control{border-color:#f39c12;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-warning .form-control:focus{border-color:#c87f0a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;}.has-warning .input-group-addon{color:#f39c12;border-color:#f39c12;background-color:#fcf8e3;}.has-warning .form-control-feedback{color:#f39c12;}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#e74c3c;}.has-error .form-control{border-color:#e74c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-error .form-control:focus{border-color:#d62c1a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;}.has-error .input-group-addon{color:#e74c3c;border-color:#e74c3c;background-color:#f2dede;}.has-error .form-control-feedback{color:#e74c3c;}.has-feedback label ~ .form-control-feedback{top:22px;}.has-feedback label.sr-only ~ .form-control-feedback{top:0;}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle;}.form-inline .form-control-static{display:inline-block;}.form-inline .input-group{display:inline-table;vertical-align:middle;}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto;}.form-inline .input-group > .form-control{width:100%;}.form-inline .control-label{margin-bottom:0;vertical-align:middle;}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.form-inline .radio label,.form-inline .checkbox label{padding-left:0;}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.form-inline .has-feedback .form-control-feedback{top:0;}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px;}.form-horizontal .radio,.form-horizontal .checkbox{min-height:24px;}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px;}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px;}}.form-horizontal .has-feedback .form-control-feedback{right:15px;}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:15px;}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:11px;}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none;}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none;}.btn-default{color:#333;background-color:#fff;border-color:#ccc;}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c;}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active:hover,.btn-default.active:hover,.open > .dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open > .dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open > .dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{background-image:none;}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc;}.btn-default .badge{color:#fff;background-color:#333;}.btn-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#1a242f;border-color:#000000;}.btn-primary:hover{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active:hover,.btn-primary.active:hover,.open > .dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open > .dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open > .dropdown-toggle.btn-primary.focus{color:#fff;background-color:#0d1318;border-color:#000000;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{background-image:none;}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2c3e50;border-color:#2c3e50;}.btn-primary .badge{color:#2c3e50;background-color:#fff;}.btn-success{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#128f76;border-color:#0a4b3e;}.btn-success:hover{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active:hover,.btn-success.active:hover,.open > .dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open > .dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open > .dropdown-toggle.btn-success.focus{color:#fff;background-color:#0e6f5c;border-color:#0a4b3e;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{background-image:none;}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#18bc9c;border-color:#18bc9c;}.btn-success .badge{color:#18bc9c;background-color:#fff;}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db;}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#217dbb;border-color:#16527a;}.btn-info:hover{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active:hover,.btn-info.active:hover,.open > .dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open > .dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open > .dropdown-toggle.btn-info.focus{color:#fff;background-color:#1c699d;border-color:#16527a;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{background-image:none;}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db;}.btn-info .badge{color:#3498db;background-color:#fff;}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12;}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#c87f0a;border-color:#7f5006;}.btn-warning:hover{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active:hover,.btn-warning.active:hover,.open > .dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open > .dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open > .dropdown-toggle.btn-warning.focus{color:#fff;background-color:#a66908;border-color:#7f5006;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{background-image:none;}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12;}.btn-warning .badge{color:#f39c12;background-color:#fff;}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#d62c1a;border-color:#921e12;}.btn-danger:hover{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active:hover,.btn-danger.active:hover,.open > .dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open > .dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open > .dropdown-toggle.btn-danger.focus{color:#fff;background-color:#b62516;border-color:#921e12;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{background-image:none;}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c;}.btn-danger .badge{color:#e74c3c;background-color:#fff;}.btn-link{color:#2c3e50;font-weight:normal;border-radius:0;}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent;}.btn-link:hover,.btn-link:focus{color:#11181f;text-decoration:underline;background-color:transparent;}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777777;text-decoration:none;}.btn-lg,.btn-group-lg > .btn{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.btn-sm,.btn-group-sm > .btn{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-xs,.btn-group-xs > .btn{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-block{display:block;width:100%;}.btn-block + .btn-block{margin-top:5px;}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}.collapse{display:none;}.collapse.in{display:block;}tr.collapse.in{display:table-row;}tbody.collapse.in{display:table-row-group;}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease;}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent;}.dropup,.dropdown{position:relative;}.dropdown-toggle:focus{outline:0;}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}.dropdown-menu .divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap;}.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5;}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;outline:0;background-color:#2c3e50;}.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#777777;}.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed;}.open > .dropdown-menu{display:block;}.open > a{outline:0;}.dropdown-menu-right{left:auto;right:0;}.dropdown-menu-left{left:0;right:auto;}.dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#777777;white-space:nowrap;}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}.pull-right > .dropdown-menu{right:0;left:auto;}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:"";}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px;}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0;}.navbar-right .dropdown-menu-left{left:0;right:auto;}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle;}.btn-group > .btn,.btn-group-vertical > .btn{position:relative;float:left;}.btn-group > .btn:hover,.btn-group-vertical > .btn:hover,.btn-group > .btn:focus,.btn-group-vertical > .btn:focus,.btn-group > .btn:active,.btn-group-vertical > .btn:active,.btn-group > .btn.active,.btn-group-vertical > .btn.active{z-index:2;}.btn-group .btn + .btn,.btn-group .btn + .btn-group,.btn-group .btn-group + .btn,.btn-group .btn-group + .btn-group{margin-left:-1px;}.btn-toolbar{margin-left:-5px;}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left;}.btn-toolbar > .btn,.btn-toolbar > .btn-group,.btn-toolbar > .input-group{margin-left:5px;}.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0;}.btn-group > .btn:first-child{margin-left:0;}.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group > .btn-group{float:left;}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}.btn-group > .btn + .dropdown-toggle{padding-left:8px;padding-right:8px;}.btn-group > .btn-lg + .dropdown-toggle{padding-left:12px;padding-right:12px;}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn .caret{margin-left:0;}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0;}.dropup .btn-lg .caret{border-width:0 5px 5px;}.btn-group-vertical > .btn,.btn-group-vertical > .btn-group,.btn-group-vertical > .btn-group > .btn{display:block;float:none;width:100%;max-width:100%;}.btn-group-vertical > .btn-group > .btn{float:none;}.btn-group-vertical > .btn + .btn,.btn-group-vertical > .btn + .btn-group,.btn-group-vertical > .btn-group + .btn,.btn-group-vertical > .btn-group + .btn-group{margin-top:-1px;margin-left:0;}.btn-group-vertical > .btn:not(:first-child):not(:last-child){border-radius:0;}.btn-group-vertical > .btn:first-child:not(:last-child){border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child{border-top-right-radius:0;border-top-left-radius:0;}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate;}.btn-group-justified > .btn,.btn-group-justified > .btn-group{float:none;display:table-cell;width:1%;}.btn-group-justified > .btn-group .btn{width:100%;}.btn-group-justified > .btn-group .dropdown-menu{left:auto;}[data-toggle="buttons"] > .btn input[type="radio"],[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],[data-toggle="buttons"] > .btn input[type="checkbox"],[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none;}.input-group{position:relative;display:table;border-collapse:separate;}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0;}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0;}.input-group .form-control:focus{z-index:3;}.input-group-lg > .form-control,.input-group-lg > .input-group-addon,.input-group-lg > .input-group-btn > .btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-group-lg > .form-control,select.input-group-lg > .input-group-addon,select.input-group-lg > .input-group-btn > .btn{height:42px;line-height:42px;}textarea.input-group-lg > .form-control,textarea.input-group-lg > .input-group-addon,textarea.input-group-lg > .input-group-btn > .btn,select[multiple].input-group-lg > .form-control,select[multiple].input-group-lg > .input-group-addon,select[multiple].input-group-lg > .input-group-btn > .btn{height:auto;}.input-group-sm > .form-control,.input-group-sm > .input-group-addon,.input-group-sm > .input-group-btn > .btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-group-sm > .form-control,select.input-group-sm > .input-group-addon,select.input-group-sm > .input-group-btn > .btn{height:28px;line-height:28px;}textarea.input-group-sm > .form-control,textarea.input-group-sm > .input-group-addon,textarea.input-group-sm > .input-group-btn > .btn,select[multiple].input-group-sm > .form-control,select[multiple].input-group-sm > .input-group-addon,select[multiple].input-group-sm > .input-group-btn > .btn{height:auto;}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell;}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0;}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle;}.input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #ccc;border-radius:3px;}.input-group-addon.input-sm{padding:5px 10px;font-size:11px;border-radius:2px;}.input-group-addon.input-lg{padding:10px 16px;font-size:15px;border-radius:5px;}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0;}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group > .btn,.input-group-btn:first-child > .dropdown-toggle,.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child > .btn-group:not(:last-child) > .btn{border-bottom-right-radius:0;border-top-right-radius:0;}.input-group-addon:first-child{border-right:0;}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group > .btn,.input-group-btn:last-child > .dropdown-toggle,.input-group-btn:first-child > .btn:not(:first-child),.input-group-btn:first-child > .btn-group:not(:first-child) > .btn{border-bottom-left-radius:0;border-top-left-radius:0;}.input-group-addon:last-child{border-left:0;}.input-group-btn{position:relative;font-size:0;white-space:nowrap;}.input-group-btn > .btn{position:relative;}.input-group-btn > .btn + .btn{margin-left:-1px;}.input-group-btn > .btn:hover,.input-group-btn > .btn:focus,.input-group-btn > .btn:active{z-index:2;}.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group{margin-right:-1px;}.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group{z-index:2;margin-left:-1px;}.nav{margin-bottom:0;padding-left:0;list-style:none;}.nav > li{position:relative;display:block;}.nav > li > a{position:relative;display:block;padding:10px 15px;}.nav > li > a:hover,.nav > li > a:focus{text-decoration:none;background-color:#eeeeee;}.nav > li.disabled > a{color:#777777;}.nav > li.disabled > a:hover,.nav > li.disabled > a:focus{color:#777777;text-decoration:none;background-color:transparent;cursor:not-allowed;}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{background-color:#eeeeee;border-color:#2c3e50;}.nav .nav-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.nav > li > a > img{max-width:none;}.nav-tabs{border-bottom:1px solid #ddd;}.nav-tabs > li{float:left;margin-bottom:-1px;}.nav-tabs > li > a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0;}.nav-tabs > li > a:hover{border-color:#eeeeee #eeeeee #ddd;}.nav-tabs > li.active > a,.nav-tabs > li.active > a:hover,.nav-tabs > li.active > a:focus{color:#555555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}.nav-tabs.nav-justified{width:100%;border-bottom:0;}.nav-tabs.nav-justified > li{float:none;}.nav-tabs.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-tabs.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-tabs.nav-justified > li{display:table-cell;width:1%;}.nav-tabs.nav-justified > li > a{margin-bottom:0;}}.nav-tabs.nav-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs.nav-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border-bottom-color:#fff;}}.nav-pills > li{float:left;}.nav-pills > li > a{border-radius:3px;}.nav-pills > li + li{margin-left:2px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{color:#fff;background-color:#2c3e50;}.nav-stacked > li{float:none;}.nav-stacked > li + li{margin-top:2px;margin-left:0;}.nav-justified{width:100%;}.nav-justified > li{float:none;}.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-justified > li{display:table-cell;width:1%;}.nav-justified > li > a{margin-bottom:0;}}.nav-tabs-justified{border-bottom:0;}.nav-tabs-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border-bottom-color:#fff;}}.tab-content > .tab-pane{display:none;}.tab-content > .active{display:block;}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0;}.navbar{position:relative;min-height:50px;margin-bottom:17px;border:1px solid transparent;}@media (min-width:768px){.navbar{border-radius:3px;}}@media (min-width:768px){.navbar-header{float:left;}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch;}.navbar-collapse.in{overflow-y:auto;}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none;}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important;}.navbar-collapse.in{overflow-y:visible;}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0;}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px;}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px;}}.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:-15px;margin-left:-15px;}@media (min-width:768px){.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:0;margin-left:0;}}.navbar-static-top{z-index:1000;border-width:0 0 1px;}@media (min-width:768px){.navbar-static-top{border-radius:0;}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0;}}.navbar-fixed-top{top:0;border-width:0 0 1px;}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0;}.navbar-brand{float:left;padding:16.5px 15px;font-size:15px;line-height:17px;height:50px;}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none;}.navbar-brand > img{display:block;}@media (min-width:768px){.navbar > .container .navbar-brand,.navbar > .container-fluid .navbar-brand{margin-left:-15px;}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;}.navbar-toggle:focus{outline:0;}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;}.navbar-toggle .icon-bar + .icon-bar{margin-top:4px;}@media (min-width:768px){.navbar-toggle{display:none;}}.navbar-nav{margin:8.25px -15px;}.navbar-nav > li > a{padding-top:10px;padding-bottom:10px;line-height:17px;}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none;}.navbar-nav .open .dropdown-menu > li > a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px;}.navbar-nav .open .dropdown-menu > li > a{line-height:17px;}.navbar-nav .open .dropdown-menu > li > a:hover,.navbar-nav .open .dropdown-menu > li > a:focus{background-image:none;}}@media (min-width:768px){.navbar-nav{float:left;margin:0;}.navbar-nav > li{float:left;}.navbar-nav > li > a{padding-top:16.5px;padding-bottom:16.5px;}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:9.5px;margin-bottom:9.5px;}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle;}.navbar-form .form-control-static{display:inline-block;}.navbar-form .input-group{display:inline-table;vertical-align:middle;}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto;}.navbar-form .input-group > .form-control{width:100%;}.navbar-form .control-label{margin-bottom:0;vertical-align:middle;}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0;}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.navbar-form .has-feedback .form-control-feedback{top:0;}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px;}.navbar-form .form-group:last-child{margin-bottom:0;}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none;}}.navbar-nav > li > .dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0;}.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.navbar-btn{margin-top:9.5px;margin-bottom:9.5px;}.navbar-btn.btn-sm{margin-top:11px;margin-bottom:11px;}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px;}.navbar-text{margin-top:16.5px;margin-bottom:16.5px;}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px;}}@media (min-width:768px){.navbar-left{float:left !important;}.navbar-right{float:right !important;margin-right:-15px;}.navbar-right ~ .navbar-right{margin-right:0;}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7;}.navbar-default .navbar-brand{color:#777;}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent;}.navbar-default .navbar-text{color:#777;}.navbar-default .navbar-nav > li > a{color:#777;}.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav > .disabled > a,.navbar-default .navbar-nav > .disabled > a:hover,.navbar-default .navbar-nav > .disabled > a:focus{color:#ccc;background-color:transparent;}.navbar-default .navbar-toggle{border-color:#ddd;}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd;}.navbar-default .navbar-toggle .icon-bar{background-color:#888;}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7;}.navbar-default .navbar-nav > .open > a,.navbar-default .navbar-nav > .open > a:hover,.navbar-default .navbar-nav > .open > a:focus{background-color:#e7e7e7;color:#555;}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu > li > a{color:#777;}.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav .open .dropdown-menu > .active > a,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#ccc;background-color:transparent;}}.navbar-default .navbar-link{color:#777;}.navbar-default .navbar-link:hover{color:#333;}.navbar-default .btn-link{color:#777;}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333;}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc;}.navbar-inverse{background-color:#222;border-color:#080808;}.navbar-inverse .navbar-brand{color:#9d9d9d;}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-text{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a:hover,.navbar-inverse .navbar-nav > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav > .active > a,.navbar-inverse .navbar-nav > .active > a:hover,.navbar-inverse .navbar-nav > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav > .disabled > a,.navbar-inverse .navbar-nav > .disabled > a:hover,.navbar-inverse .navbar-nav > .disabled > a:focus{color:#444;background-color:transparent;}.navbar-inverse .navbar-toggle{border-color:#333;}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333;}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff;}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010;}.navbar-inverse .navbar-nav > .open > a,.navbar-inverse .navbar-nav > .open > a:hover,.navbar-inverse .navbar-nav > .open > a:focus{background-color:#080808;color:#fff;}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header{border-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#444;background-color:transparent;}}.navbar-inverse .navbar-link{color:#9d9d9d;}.navbar-inverse .navbar-link:hover{color:#fff;}.navbar-inverse .btn-link{color:#9d9d9d;}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff;}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444;}.breadcrumb{padding:8px 15px;margin-bottom:17px;list-style:none;background-color:#f5f5f5;border-radius:3px;}.breadcrumb > li{display:inline-block;}.breadcrumb > li + li:before{content:"/\00a0";padding:0 5px;color:#ccc;}.breadcrumb > .active{color:#777777;}.pagination{display:inline-block;padding-left:0;margin:17px 0;border-radius:3px;}.pagination > li{display:inline;}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#2c3e50;background-color:#fff;border:1px solid #ddd;margin-left:-1px;}.pagination > li:first-child > a,.pagination > li:first-child > span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px;}.pagination > li:last-child > a,.pagination > li:last-child > span{border-bottom-right-radius:3px;border-top-right-radius:3px;}.pagination > li > a:hover,.pagination > li > span:hover,.pagination > li > a:focus,.pagination > li > span:focus{z-index:2;color:#11181f;background-color:#eeeeee;border-color:#ddd;}.pagination > .active > a,.pagination > .active > span,.pagination > .active > a:hover,.pagination > .active > span:hover,.pagination > .active > a:focus,.pagination > .active > span:focus{z-index:3;color:#fff;background-color:#2c3e50;border-color:#2c3e50;cursor:default;}.pagination > .disabled > span,.pagination > .disabled > span:hover,.pagination > .disabled > span:focus,.pagination > .disabled > a,.pagination > .disabled > a:hover,.pagination > .disabled > a:focus{color:#777777;background-color:#fff;border-color:#ddd;cursor:not-allowed;}.pagination-lg > li > a,.pagination-lg > li > span{padding:10px 16px;font-size:15px;line-height:1.3333333;}.pagination-lg > li:first-child > a,.pagination-lg > li:first-child > span{border-bottom-left-radius:5px;border-top-left-radius:5px;}.pagination-lg > li:last-child > a,.pagination-lg > li:last-child > span{border-bottom-right-radius:5px;border-top-right-radius:5px;}.pagination-sm > li > a,.pagination-sm > li > span{padding:5px 10px;font-size:11px;line-height:1.5;}.pagination-sm > li:first-child > a,.pagination-sm > li:first-child > span{border-bottom-left-radius:2px;border-top-left-radius:2px;}.pagination-sm > li:last-child > a,.pagination-sm > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px;}.pager{padding-left:0;margin:17px 0;list-style:none;text-align:center;}.pager li{display:inline;}.pager li > a,.pager li > span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px;}.pager li > a:hover,.pager li > a:focus{text-decoration:none;background-color:#eeeeee;}.pager .next > a,.pager .next > span{float:right;}.pager .previous > a,.pager .previous > span{float:left;}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{color:#777777;background-color:#fff;cursor:not-allowed;}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer;}.label:empty{display:none;}.btn .label{position:relative;top:-1px;}.label-default{background-color:#777777;}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e;}.label-primary{background-color:#2c3e50;}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f;}.label-success{background-color:#18bc9c;}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76;}.label-info{background-color:#3498db;}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb;}.label-warning{background-color:#f39c12;}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a;}.label-danger{background-color:#e74c3c;}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a;}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777777;border-radius:10px;}.badge:empty{display:none;}.btn .badge{position:relative;top:-1px;}.btn-xs .badge,.btn-group-xs > .btn .badge{top:0;padding:1px 5px;}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer;}.list-group-item.active > .badge,.nav-pills > .active > a > .badge{color:#2c3e50;background-color:#fff;}.list-group-item > .badge{float:right;}.list-group-item > .badge + .badge{margin-right:5px;}.nav-pills > li > a > .badge{margin-left:3px;}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee;}.jumbotron h1,.jumbotron .h1{color:inherit;}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200;}.jumbotron > hr{border-top-color:#d5d5d5;}.container .jumbotron,.container-fluid .jumbotron{border-radius:5px;padding-left:15px;padding-right:15px;}.jumbotron .container{max-width:100%;}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px;}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px;}.jumbotron h1,.jumbotron .h1{font-size:54px;}}.thumbnail{display:block;padding:4px;margin-bottom:17px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out;}.thumbnail > img,.thumbnail a > img{margin-left:auto;margin-right:auto;}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2c3e50;}.thumbnail .caption{padding:9px;color:#333333;}.alert{padding:15px;margin-bottom:17px;border:1px solid transparent;border-radius:3px;}.alert h4{margin-top:0;color:inherit;}.alert .alert-link{font-weight:bold;}.alert > p,.alert > ul{margin-bottom:0;}.alert > p + p{margin-top:5px;}.alert-dismissable,.alert-dismissible{padding-right:35px;}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit;}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#18bc9c;}.alert-success hr{border-top-color:#c9e2b3;}.alert-success .alert-link{color:#128f76;}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3498db;}.alert-info hr{border-top-color:#a6e1ec;}.alert-info .alert-link{color:#217dbb;}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#f39c12;}.alert-warning hr{border-top-color:#f7e1b5;}.alert-warning .alert-link{color:#c87f0a;}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#e74c3c;}.alert-danger hr{border-top-color:#e4b9c0;}.alert-danger .alert-link{color:#d62c1a;}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}.progress{overflow:hidden;height:17px;margin-bottom:17px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);}.progress-bar{float:left;width:0%;height:100%;font-size:11px;line-height:17px;color:#fff;text-align:center;background-color:#2c3e50;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px;}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.media{margin-top:15px;}.media:first-child{margin-top:0;}.media,.media-body{zoom:1;overflow:hidden;}.media-body{width:10000px;}.media-object{display:block;}.media-object.img-thumbnail{max-width:none;}.media-right,.media > .pull-right{padding-left:10px;}.media-left,.media > .pull-left{padding-right:10px;}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top;}.media-middle{vertical-align:middle;}.media-bottom{vertical-align:bottom;}.media-heading{margin-top:0;margin-bottom:5px;}.media-list{padding-left:0;list-style:none;}.list-group{margin-bottom:20px;padding-left:0;}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd;}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px;}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}a.list-group-item,button.list-group-item{color:#555;}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333;}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5;}button.list-group-item{width:100%;text-align:left;}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#777777;cursor:not-allowed;}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit;}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777777;}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading > small,.list-group-item.active:hover .list-group-item-heading > small,.list-group-item.active:focus .list-group-item-heading > small,.list-group-item.active .list-group-item-heading > .small,.list-group-item.active:hover .list-group-item-heading > .small,.list-group-item.active:focus .list-group-item-heading > .small{color:inherit;}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be;}.list-group-item-success{color:#18bc9c;background-color:#dff0d8;}a.list-group-item-success,button.list-group-item-success{color:#18bc9c;}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit;}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#18bc9c;background-color:#d0e9c6;}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.list-group-item-info{color:#3498db;background-color:#d9edf7;}a.list-group-item-info,button.list-group-item-info{color:#3498db;}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit;}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3498db;background-color:#c4e3f3;}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3498db;border-color:#3498db;}.list-group-item-warning{color:#f39c12;background-color:#fcf8e3;}a.list-group-item-warning,button.list-group-item-warning{color:#f39c12;}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit;}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f39c12;background-color:#faf2cc;}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f39c12;border-color:#f39c12;}.list-group-item-danger{color:#e74c3c;background-color:#f2dede;}a.list-group-item-danger,button.list-group-item-danger{color:#e74c3c;}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit;}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#e74c3c;background-color:#ebcccc;}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.list-group-item-heading{margin-top:0;margin-bottom:5px;}.list-group-item-text{margin-bottom:0;line-height:1.3;}.panel{margin-bottom:17px;background-color:#fff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05);}.panel-body{padding:15px;}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px;}.panel-heading > .dropdown .dropdown-toggle{color:inherit;}.panel-title{margin-top:0;margin-bottom:0;font-size:14px;color:inherit;}.panel-title > a,.panel-title > small,.panel-title > .small,.panel-title > small > a,.panel-title > .small > a{color:inherit;}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .list-group,.panel > .panel-collapse > .list-group{margin-bottom:0;}.panel > .list-group .list-group-item,.panel > .panel-collapse > .list-group .list-group-item{border-width:1px 0;border-radius:0;}.panel > .list-group:first-child .list-group-item:first-child,.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .list-group:last-child .list-group-item:last-child,.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0;}.panel-heading + .list-group .list-group-item:first-child{border-top-width:0;}.list-group + .panel-footer{border-top-width:0;}.panel > .table,.panel > .table-responsive > .table,.panel > .panel-collapse > .table{margin-bottom:0;}.panel > .table caption,.panel > .table-responsive > .table caption,.panel > .panel-collapse > .table caption{padding-left:15px;padding-right:15px;}.panel > .table:first-child,.panel > .table-responsive:first-child > .table:first-child{border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child{border-top-left-radius:2px;border-top-right-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child{border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child{border-top-right-radius:2px;}.panel > .table:last-child,.panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child{border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child{border-bottom-right-radius:2px;}.panel > .panel-body + .table,.panel > .panel-body + .table-responsive,.panel > .table + .panel-body,.panel > .table-responsive + .panel-body{border-top:1px solid #ddd;}.panel > .table > tbody:first-child > tr:first-child th,.panel > .table > tbody:first-child > tr:first-child td{border-top:0;}.panel > .table-bordered,.panel > .table-responsive > .table-bordered{border:0;}.panel > .table-bordered > thead > tr > th:first-child,.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,.panel > .table-bordered > tbody > tr > th:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,.panel > .table-bordered > tfoot > tr > th:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,.panel > .table-bordered > thead > tr > td:first-child,.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,.panel > .table-bordered > tbody > tr > td:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,.panel > .table-bordered > tfoot > tr > td:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.panel > .table-bordered > thead > tr > th:last-child,.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,.panel > .table-bordered > tbody > tr > th:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,.panel > .table-bordered > tfoot > tr > th:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,.panel > .table-bordered > thead > tr > td:last-child,.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,.panel > .table-bordered > tbody > tr > td:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,.panel > .table-bordered > tfoot > tr > td:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.panel > .table-bordered > thead > tr:first-child > td,.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,.panel > .table-bordered > tbody > tr:first-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,.panel > .table-bordered > thead > tr:first-child > th,.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,.panel > .table-bordered > tbody > tr:first-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th{border-bottom:0;}.panel > .table-bordered > tbody > tr:last-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,.panel > .table-bordered > tfoot > tr:last-child > td,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,.panel > .table-bordered > tbody > tr:last-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,.panel > .table-bordered > tfoot > tr:last-child > th,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th{border-bottom:0;}.panel > .table-responsive{border:0;margin-bottom:0;}.panel-group{margin-bottom:17px;}.panel-group .panel{margin-bottom:0;border-radius:3px;}.panel-group .panel + .panel{margin-top:5px;}.panel-group .panel-heading{border-bottom:0;}.panel-group .panel-heading + .panel-collapse > .panel-body,.panel-group .panel-heading + .panel-collapse > .list-group{border-top:1px solid #ddd;}.panel-group .panel-footer{border-top:0;}.panel-group .panel-footer + .panel-collapse .panel-body{border-bottom:1px solid #ddd;}.panel-default{border-color:#ddd;}.panel-default > .panel-heading{color:#333333;background-color:#f5f5f5;border-color:#ddd;}.panel-default > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ddd;}.panel-default > .panel-heading .badge{color:#f5f5f5;background-color:#333333;}.panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ddd;}.panel-primary{border-color:#2c3e50;}.panel-primary > .panel-heading{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#2c3e50;}.panel-primary > .panel-heading .badge{color:#2c3e50;background-color:#fff;}.panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#2c3e50;}.panel-success{border-color:#d6e9c6;}.panel-success > .panel-heading{color:#18bc9c;background-color:#dff0d8;border-color:#d6e9c6;}.panel-success > .panel-heading + .panel-collapse > .panel-body{border-top-color:#d6e9c6;}.panel-success > .panel-heading .badge{color:#dff0d8;background-color:#18bc9c;}.panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#d6e9c6;}.panel-info{border-color:#bce8f1;}.panel-info > .panel-heading{color:#3498db;background-color:#d9edf7;border-color:#bce8f1;}.panel-info > .panel-heading + .panel-collapse > .panel-body{border-top-color:#bce8f1;}.panel-info > .panel-heading .badge{color:#d9edf7;background-color:#3498db;}.panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#bce8f1;}.panel-warning{border-color:#faebcc;}.panel-warning > .panel-heading{color:#f39c12;background-color:#fcf8e3;border-color:#faebcc;}.panel-warning > .panel-heading + .panel-collapse > .panel-body{border-top-color:#faebcc;}.panel-warning > .panel-heading .badge{color:#fcf8e3;background-color:#f39c12;}.panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#faebcc;}.panel-danger{border-color:#ebccd1;}.panel-danger > .panel-heading{color:#e74c3c;background-color:#f2dede;border-color:#ebccd1;}.panel-danger > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ebccd1;}.panel-danger > .panel-heading .badge{color:#f2dede;background-color:#e74c3c;}.panel-danger > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ebccd1;}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden;}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0;}.embed-responsive-16by9{padding-bottom:56.25%;}.embed-responsive-4by3{padding-bottom:75%;}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15);}.well-lg{padding:24px;border-radius:5px;}.well-sm{padding:9px;border-radius:2px;}.close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.modal-open{overflow:hidden;}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0;}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.modal-open .modal{overflow-x:hidden;overflow-y:auto;}.modal-dialog{position:relative;width:auto;margin:10px;}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0;}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000;}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0);}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50);}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;}.modal-header .close{margin-top:-2px;}.modal-title{margin:0;line-height:1.42857143;}.modal-body{position:relative;padding:15px;}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5;}.modal-footer .btn + .btn{margin-left:5px;margin-bottom:0;}.modal-footer .btn-group .btn + .btn{margin-left:-1px;}.modal-footer .btn-block + .btn-block{margin-left:0;}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll;}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5);}.modal-sm{width:300px;}}@media (min-width:992px){.modal-lg{width:900px;}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.9;filter:alpha(opacity=90);}.tooltip.top{margin-top:-3px;padding:5px 0;}.tooltip.right{margin-left:3px;padding:0 5px;}.tooltip.bottom{margin-top:3px;padding:5px 0;}.tooltip.left{margin-left:-3px;padding:0 5px;}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px;}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000;}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000;}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);}.popover.top{margin-top:-10px;}.popover.right{margin-left:10px;}.popover.bottom{margin-top:10px;}.popover.left{margin-left:-10px;}.popover-title{margin:0;padding:8px 14px;font-size:12px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0;}.popover-content{padding:9px 14px;}.popover > .arrow,.popover > .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}.popover > .arrow{border-width:11px;}.popover > .arrow:after{border-width:10px;content:"";}.popover.top > .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px;}.popover.top > .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff;}.popover.right > .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25);}.popover.right > .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff;}.popover.bottom > .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px;}.popover.bottom > .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff;}.popover.left > .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25);}.popover.left > .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px;}.carousel{position:relative;}.carousel-inner{position:relative;overflow:hidden;width:100%;}.carousel-inner > .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner > .item > img,.carousel-inner > .item > a > img{line-height:1;}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner > .item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px;}.carousel-inner > .item.next,.carousel-inner > .item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0;}.carousel-inner > .item.prev,.carousel-inner > .item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0;}.carousel-inner > .item.next.left,.carousel-inner > .item.prev.right,.carousel-inner > .item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0;}}.carousel-inner > .active,.carousel-inner > .next,.carousel-inner > .prev{display:block;}.carousel-inner > .active{left:0;}.carousel-inner > .next,.carousel-inner > .prev{position:absolute;top:0;width:100%;}.carousel-inner > .next{left:100%;}.carousel-inner > .prev{left:-100%;}.carousel-inner > .next.left,.carousel-inner > .prev.right{left:0;}.carousel-inner > .active.left{left:-100%;}.carousel-inner > .active.right{left:100%;}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1);}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1);}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block;}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px;}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px;}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif;}.carousel-control .icon-prev:before{content:'\2039';}.carousel-control .icon-next:before{content:'\203a';}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center;}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff;}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);}.carousel-caption .btn{text-shadow:none;}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px;}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px;}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px;}.carousel-caption{left:20%;right:20%;padding-bottom:30px;}.carousel-indicators{bottom:20px;}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical > .btn-group:before,.btn-group-vertical > .btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table;}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical > .btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}@-ms-viewport{width:device-width;}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important;}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important;}@media (max-width:767px){.visible-xs{display:block !important;}table.visible-xs{display:table !important;}tr.visible-xs{display:table-row !important;}th.visible-xs,td.visible-xs{display:table-cell !important;}}@media (max-width:767px){.visible-xs-block{display:block !important;}}@media (max-width:767px){.visible-xs-inline{display:inline !important;}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important;}table.visible-sm{display:table !important;}tr.visible-sm{display:table-row !important;}th.visible-sm,td.visible-sm{display:table-cell !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important;}table.visible-md{display:table !important;}tr.visible-md{display:table-row !important;}th.visible-md,td.visible-md{display:table-cell !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important;}}@media (min-width:1200px){.visible-lg{display:block !important;}table.visible-lg{display:table !important;}tr.visible-lg{display:table-row !important;}th.visible-lg,td.visible-lg{display:table-cell !important;}}@media (min-width:1200px){.visible-lg-block{display:block !important;}}@media (min-width:1200px){.visible-lg-inline{display:inline !important;}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important;}}@media (max-width:767px){.hidden-xs{display:none !important;}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important;}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important;}}@media (min-width:1200px){.hidden-lg{display:none !important;}}.visible-print{display:none !important;}@media print{.visible-print{display:block !important;}table.visible-print{display:table !important;}tr.visible-print{display:table-row !important;}th.visible-print,td.visible-print{display:table-cell !important;}}.visible-print-block{display:none !important;}@media print{.visible-print-block{display:block !important;}}.visible-print-inline{display:none !important;}@media print{.visible-print-inline{display:inline !important;}}.visible-print-inline-block{display:none !important;}@media print{.visible-print-inline-block{display:inline-block !important;}}@media print{.hidden-print{display:none !important;}}/*! * AdminLTE v2.3.7 * Author:Almsaeed Studio * Website:Almsaeed Studio <http://almsaeedstudio.com> * License:Open source - MIT * Please visit http://opensource.org/licenses/MIT for more information !*/ html,body{min-height:100%;}.layout-boxed html,.layout-boxed body{height:100%;}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto;}.wrapper{min-height:100%;position:relative;overflow:hidden;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative;}.layout-boxed{background:url(../img/boxed-bg.jpg) repeat fixed;}.content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,margin 0.3s ease-in-out;transition:transform 0.3s ease-in-out,margin 0.3s ease-in-out;margin-left:230px;z-index:820;}.layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0;}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0;}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0;}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px,0);-ms-transform:translate(230px,0);-o-transform:translate(230px,0);transform:translate(230px,0);}}.content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800;}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de;}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed;}.fixed .main-header{top:0;right:0;left:0;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px;}}.fixed.layout-boxed .wrapper{max-width:100%;}body.hold-transition .content-wrapper,body.hold-transition .right-side,body.hold-transition .main-footer,body.hold-transition .main-sidebar,body.hold-transition .left-side,body.hold-transition .main-header .navbar,body.hold-transition .main-header .logo{-webkit-transition:none;-o-transition:none;transition:none;}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif;}a{color:#3c8dbc;}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2;}.page-header{margin:10px 0 20px 0;font-size:22px;}.page-header > small{color:#666;display:block;margin-top:5px;}.main-header{position:relative;max-height:100px;z-index:1030;}.main-header .navbar{-webkit-transition:margin-left 0.3s ease-in-out;-o-transition:margin-left 0.3s ease-in-out;transition:margin-left 0.3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0;}.layout-top-nav .main-header .navbar{margin-left:0;}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent;}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9);}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1;}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc;}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc;}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right;}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent;}}@media (max-width:767px){.main-header .navbar-right{float:none;}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px;}.main-header .navbar-right > li{color:inherit;border:0;}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:16.5px 15px;font-family:fontAwesome;}.main-header .sidebar-toggle:before{content:"\f0c9";}.main-header .sidebar-toggle:hover{color:#fff;}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent;}.main-header .sidebar-toggle .icon-bar{display:none;}.main-header .navbar .nav > li.user > a > .fa,.main-header .navbar .nav > li.user > a > .glyphicon,.main-header .navbar .nav > li.user > a > .ion{margin-right:5px;}.main-header .navbar .nav > li > a > .label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9;}.main-header .logo{-webkit-transition:width 0.3s ease-in-out;-o-transition:width 0.3s ease-in-out;transition:width 0.3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden;}.main-header .logo .logo-lg{display:block;}.main-header .logo .logo-mini{display:none;}.main-header .navbar-brand{color:#fff;}.content-header{position:relative;padding:15px 15px 0 15px;}.content-header > h1{margin:0;font-size:24px;}.content-header > h1 > small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300;}.content-header > .breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px;}.content-header > .breadcrumb > li > a{color:#444;text-decoration:none;display:inline-block;}.content-header > .breadcrumb > li > a > .fa,.content-header > .breadcrumb > li > a > .glyphicon,.content-header > .breadcrumb > li > a > .ion{margin-right:5px;}.content-header > .breadcrumb > li + li:before{content:'>\00a0';}@media (max-width:991px){.content-header > .breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px;}.content-header > .breadcrumb li:before{color:#97a0b3;}}.navbar-toggle{color:#fff;border:0;margin:0;padding:16.5px 15px;}@media (max-width:991px){.navbar-custom-menu .navbar-nav > li{float:left;}.navbar-custom-menu .navbar-nav{margin:0;float:left;}.navbar-custom-menu .navbar-nav > li > a{padding-top:15px;padding-bottom:15px;line-height:20px;}}@media (max-width:767px){.main-header{position:relative;}.main-header .logo,.main-header .navbar{width:100%;float:none;}.main-header .navbar{margin:0;}.main-header .navbar-custom-menu{float:right;}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important;}.navbar-collapse.pull-left + .navbar-custom-menu{display:block;position:absolute;top:0;right:40px;}}.main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform 0.3s ease-in-out,width 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,width 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,width 0.3s ease-in-out;transition:transform 0.3s ease-in-out,width 0.3s ease-in-out;}@media (max-width:767px){.main-sidebar,.left-side{padding-top:100px;}}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}}.sidebar{padding-bottom:10px;}.sidebar-form input:focus{border-color:transparent;}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel > .image > img{width:100%;max-width:45px;height:auto;}.user-panel > .info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px;}.user-panel > .info > p{font-weight:600;margin-bottom:9px;}.user-panel > .info > a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px;}.user-panel > .info > a > .fa,.user-panel > .info > a > .ion,.user-panel > .info > a > .glyphicon{margin-right:3px;}.sidebar-menu{list-style:none;margin:0;padding:0;}.sidebar-menu > li{position:relative;margin:0;padding:0;}.sidebar-menu > li > a{padding:12px 5px 12px 15px;display:block;}.sidebar-menu > li > a > .fa,.sidebar-menu > li > a > .glyphicon,.sidebar-menu > li > a > .ion{width:20px;}.sidebar-menu > li .label,.sidebar-menu > li .badge{margin-right:5px;}.sidebar-menu > li .badge{margin-top:3px;}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px;}.sidebar-menu li > a > .fa-angle-left,.sidebar-menu li > a > .pull-right-container > .fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;}.sidebar-menu li.active > a > .fa-angle-left,.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg);}.sidebar-menu li.active > .treeview-menu{display:block;}.sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px;}.sidebar-menu .treeview-menu .treeview-menu{padding-left:20px;}.sidebar-menu .treeview-menu > li{margin:0;}.sidebar-menu .treeview-menu > li > a{padding:12px 5px 12px 15px;display:block;font-size:12px;}.sidebar-menu .treeview-menu > li > a > .fa,.sidebar-menu .treeview-menu > li > a > .glyphicon,.sidebar-menu .treeview-menu > li > a > .ion{width:20px;}.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down,.sidebar-menu .treeview-menu > li > a > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .fa-angle-down{width:auto;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840;}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);width:50px !important;z-index:850;}.sidebar-mini.sidebar-collapse .sidebar-menu > li{position:relative;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a{margin-right:0;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span{border-top-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span{border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{display:block !important;position:absolute;width:180px;left:50px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{float:right;width:auto!important;left:200px!important;top:10px!important;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type){display:none;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:44px;margin-left:0;}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0);}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg{display:none;}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px;}}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu > li.header{white-space:nowrap;overflow:hidden;}.sidebar-menu:hover{overflow:visible;}.sidebar-form,.sidebar-menu > li.header{overflow:hidden;text-overflow:clip;}.sidebar-menu li > a{position:relative;}.sidebar-menu li > a > .pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px;}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0;}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right 0.3s ease-in-out;-o-transition:right 0.3s ease-in-out;transition:right 0.3s ease-in-out;}.control-sidebar{position:absolute;padding-top:50px;z-index:1010;}@media (max-width:768px){.control-sidebar{padding-top:100px;}}.control-sidebar > .tab-content{padding:10px 15px;}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open + .control-sidebar-bg{right:0;}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0;}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px;}}.nav-tabs.control-sidebar-tabs > li:first-of-type > a,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus{border-left-width:0;}.nav-tabs.control-sidebar-tabs > li > a{border-radius:0;}.nav-tabs.control-sidebar-tabs > li > a,.nav-tabs.control-sidebar-tabs > li > a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent;}.nav-tabs.control-sidebar-tabs > li > a .icon{font-size:16px;}.nav-tabs.control-sidebar-tabs > li.active > a,.nav-tabs.control-sidebar-tabs > li.active > a:hover,.nav-tabs.control-sidebar-tabs > li.active > a:focus,.nav-tabs.control-sidebar-tabs > li.active > a:active{border-top:none;border-right:none;border-bottom:none;}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table;}.nav-tabs.control-sidebar-tabs > li{display:table-cell;}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px;}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px;}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px;}.control-sidebar-menu > li > a{display:block;padding:10px 15px;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a > .control-sidebar-subheading{margin-top:0;}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px;}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px;}.control-sidebar-menu .menu-info > .control-sidebar-subheading{margin:0;}.control-sidebar-menu .menu-info > p{margin:0;font-size:11px;}.control-sidebar-menu .progress{margin:0;}.control-sidebar-dark{color:#b8c7ce;}.control-sidebar-dark,.control-sidebar-dark + .control-sidebar-bg{background:#222d32;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a{background:#181f23;color:#b8c7ce;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active{background:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover{color:#fff;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#222d32;color:#fff;}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff;}.control-sidebar-dark .control-sidebar-menu > li > a:hover{background:#1e282c;}.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p{color:#b8c7ce;}.control-sidebar-light{color:#5e5e5e;}.control-sidebar-light,.control-sidebar-light + .control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a{background:#e8ecf4;color:#444;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active{background:#eff1f7;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#f9fafc;color:#111;}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111;}.control-sidebar-light .control-sidebar-menu{margin-left:-14px;}.control-sidebar-light .control-sidebar-menu > li > a:hover{background:#f4f4f5;}.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p{color:#5e5e5e;}.dropdown-menu{box-shadow:none;border-color:#eee;}.dropdown-menu > li > a{}.dropdown-menu > li > a > .glyphicon,.dropdown-menu > li > a > .fa,.dropdown-menu > li > a > .ion{margin-right:10px;}.dropdown-menu > li > a:hover{background-color:#e1e3e9;color:#333;}.dropdown-menu > .divider{background-color:#eee;}.navbar-nav > .notifications-menu > .dropdown-menu,.navbar-nav > .messages-menu > .dropdown-menu,.navbar-nav > .tasks-menu > .dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%;}.navbar-nav > .notifications-menu > .dropdown-menu > li,.navbar-nav > .messages-menu > .dropdown-menu > li,.navbar-nav > .tasks-menu > .dropdown-menu > li{position:relative;}.navbar-nav > .notifications-menu > .dropdown-menu > li.header,.navbar-nav > .messages-menu > .dropdown-menu > li.header,.navbar-nav > .tasks-menu > .dropdown-menu > li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px;}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center;}@media (max-width:991px){.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{background:#fff !important;color:#444 !important;}}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover{text-decoration:none;font-weight:normal;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,.navbar-nav > .messages-menu > .dropdown-menu > li .menu,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover{background:#f4f4f4;text-decoration:none;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion{width:20px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a{margin:0;padding:10px 10px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img{margin:auto 10px auto auto;width:40px;height:40px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small{color:#999999;font-size:10px;position:absolute;top:0;right:0;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p{margin:0 0 0 45px;font-size:12px;color:#888888;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{padding:10px;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress{padding:0;margin:0;}.navbar-nav > .user-menu > .dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width: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;border-color:transparent;border-color:rgba(255,255,255,0.2);}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);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{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body a{color:#444 !important;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-body a{background:#fff !important;color:#444 !important;}}.navbar-nav > .user-menu > .dropdown-menu > .user-footer{background-color:#f9f9f9;padding:10px;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default{color:#666666;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover{background-color:#f9f9f9;}}.navbar-nav > .user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px;}@media (max-width:767px){.navbar-nav > .user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px;}}.open:not(.dropup) > .animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX 0.7s both;-o-animation:flipInX 0.7s both;animation:flipInX 0.7s both;}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1,0,0,90deg);transition-timing-function:ease-in;opacity:0;}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);transition-timing-function:ease-in;}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{transform:perspective(400px);}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;opacity:0;}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{-webkit-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:991px){.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;}}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:3px 0 3px 3px;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;border-radius:3px 0 3px 3px;}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de;-webkit-appearance:none;-moz-appearance:none;appearance:none;}.form-control:focus{border-color:#3c8dbc;box-shadow:none;}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1;}.form-control .btn{border-radius:0;}select.form-control{-webkit-appearance:none;-webkit-border-radius:0px;background-position:right 50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);}.form-group.has-success label{color:#18bc9c;}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#18bc9c;box-shadow:none;}.form-group.has-success .help-block{color:#18bc9c;}.form-group.has-warning label{color:#f39c12;}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none;}.form-group.has-warning .help-block{color:#f39c12;}.form-group.has-error label{color:#e74c3c;}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#e74c3c;box-shadow:none;}.form-group.has-error .help-block{color:#e74c3c;}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff;}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0;}.icheck > label{padding-left:0;}.form-control-feedback.fa{line-height:31px;}.input-lg + .form-control-feedback.fa,.input-group-lg + .form-control-feedback.fa,.form-group-lg .form-control + .form-control-feedback.fa{line-height:42px;}.input-sm + .form-control-feedback.fa,.input-group-sm + .form-control-feedback.fa,.form-group-sm .form-control + .form-control-feedback.fa{line-height:28px;}.progress,.progress > .progress-bar{-webkit-box-shadow:none;box-shadow:none;}.progress,.progress > .progress-bar,.progress .progress-bar,.progress > .progress-bar .progress-bar{border-radius:1px;}.progress.sm,.progress-sm{height:10px;}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px;}.progress.xs,.progress-xs{height:7px;}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px;}.progress.xxs,.progress-xxs{height:3px;}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px;}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px;}.progress.vertical > .progress-bar{width:100%;position:absolute;bottom:0;}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px;}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px;}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px;}.progress-group .progress-text{font-weight:600;}.progress-group .progress-number{float:right;}.table tr > td .progress{margin:0;}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc;}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-green,.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-aqua,.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-red,.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.small-box > .inner{padding:10px;}.small-box > .small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none;}.small-box > .small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15);}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0;}.small-box p{font-size:15px;}.small-box p > small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px;}.small-box h3,.small-box p{z-index:5;}.small-box .icon{-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:all 0.3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15);}.small-box:hover{text-decoration:none;color:#f9f9f9;}.small-box:hover .icon{font-size:95px;}@media (max-width:767px){.small-box{text-align:center;}.small-box .icon{display:none;}.small-box p{font-size:12px;}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.box.box-primary{border-top-color:#3c8dbc;}.box.box-info{border-top-color:#3498db;}.box.box-danger{border-top-color:#e74c3c;}.box.box-warning{border-top-color:#f39c12;}.box.box-success{border-top-color:#18bc9c;}.box.box-default{border-top-color:#d2d6de;}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none;}.box .nav-stacked > li{border-bottom:1px solid #f4f4f4;margin:0;}.box .nav-stacked > li:last-of-type{border-bottom:none;}.box.height-control .box-body{max-height:300px;overflow:auto;}.box .border-right{border-right:1px solid #f4f4f4;}.box .border-left{border-left:1px solid #f4f4f4;}.box.box-solid{border-top:0;}.box.box-solid > .box-header .btn.btn-default{background:transparent;}.box.box-solid > .box-header .btn:hover,.box.box-solid > .box-header a:hover{background:rgba(0,0,0,0.1);}.box.box-solid.box-default{border:1px solid #d2d6de;}.box.box-solid.box-default > .box-header{color:#444;background:#d2d6de;background-color:#d2d6de;}.box.box-solid.box-default > .box-header a,.box.box-solid.box-default > .box-header .btn{color:#444;}.box.box-solid.box-primary{border:1px solid #3c8dbc;}.box.box-solid.box-primary > .box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc;}.box.box-solid.box-primary > .box-header a,.box.box-solid.box-primary > .box-header .btn{color:#fff;}.box.box-solid.box-info{border:1px solid #3498db;}.box.box-solid.box-info > .box-header{color:#fff;background:#3498db;background-color:#3498db;}.box.box-solid.box-info > .box-header a,.box.box-solid.box-info > .box-header .btn{color:#fff;}.box.box-solid.box-danger{border:1px solid #e74c3c;}.box.box-solid.box-danger > .box-header{color:#fff;background:#e74c3c;background-color:#e74c3c;}.box.box-solid.box-danger > .box-header a,.box.box-solid.box-danger > .box-header .btn{color:#fff;}.box.box-solid.box-warning{border:1px solid #f39c12;}.box.box-solid.box-warning > .box-header{color:#fff;background:#f39c12;background-color:#f39c12;}.box.box-solid.box-warning > .box-header a,.box.box-solid.box-warning > .box-header .btn{color:#fff;}.box.box-solid.box-success{border:1px solid #18bc9c;}.box.box-solid.box-success > .box-header{color:#fff;background:#18bc9c;background-color:#18bc9c;}.box.box-solid.box-success > .box-header a,.box.box-solid.box-success > .box-header .btn{color:#fff;}.box.box-solid > .box-header > .box-tools .btn{border:0;box-shadow:none;}.box.box-solid[class*='bg'] > .box-header{color:#fff;}.box .box-group > .box{margin-bottom:5px;}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em;}.box > .overlay,.overlay-wrapper > .overlay,.box > .loading-img,.overlay-wrapper > .loading-img{position:absolute;top:0;left:0;width:100%;height:100%;}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px;}.box .overlay > .fa,.overlay-wrapper .overlay > .fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px;}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5);}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header{color:#444;display:block;padding:10px;position:relative;}.box-header.with-border{border-bottom:1px solid #f4f4f4;}.collapsed-box .box-header.with-border{border-bottom:none;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion{margin-right:5px;}.box-header > .box-tools{position:absolute;right:10px;top:5px;}.box-header > .box-tools [data-toggle="tooltip"]{position:relative;}.box-header > .box-tools.pull-right .dropdown-menu{right:0;left:auto;}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3;}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84;}.btn-box-tool.btn:active{box-shadow:none;}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px;}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px;}.box-body > .table{margin-bottom:0;}.box-body .fc{margin-top:5px;}.box-body .full-width-chart{margin:-19px;}.box-body.no-padding .full-width-chart{margin:-9px;}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px;}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff;}.chart-legend{margin:10px 0;}@media (max-width:991px){.chart-legend > li{float:left;margin-right:10px;}}.box-comments{background:#f7f7f7;}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:last-of-type{border-bottom:0;}.box-comments .box-comment:first-of-type{padding-top:0;}.box-comments .box-comment img{float:left;}.box-comments .comment-text{margin-left:40px;color:#555;}.box-comments .username{color:#444;display:block;font-weight:600;}.box-comments .text-muted{font-weight:400;font-size:12px;}.todo-list{margin:0;padding:0;list-style:none;overflow:auto;}.todo-list > li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444;}.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;margin-left:5px;font-weight:600;}.todo-list > li .label{margin-left:10px;font-size:9px;}.todo-list > li .tools{display:none;float:right;color:#e74c3c;}.todo-list > li .tools > .fa,.todo-list > li .tools > .glyphicon,.todo-list > li .tools > .ion{margin-right:5px;cursor:pointer;}.todo-list > li:hover .tools{display:inline-block;}.todo-list > li.done{color:#999;}.todo-list > li.done .text{text-decoration:line-through;font-weight:500;}.todo-list > li.done .label{background:#d2d6de !important;}.todo-list .danger{border-left-color:#e74c3c;}.todo-list .warning{border-left-color:#f39c12;}.todo-list .info{border-left-color:#3498db;}.todo-list .success{border-left-color:#18bc9c;}.todo-list .primary{border-left-color:#3c8dbc;}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px;}.chat{padding:5px 20px 5px 10px;}.chat .item{margin-bottom:10px;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item > img{width:40px;height:40px;border:2px solid transparent;border-radius:50%;}.chat .item > .online{border:2px solid #18bc9c;}.chat .item > .offline{border:2px solid #e74c3c;}.chat .item > .message{margin-left:55px;margin-top:-40px;}.chat .item > .message > .name{display:block;font-weight:600;}.chat .item > .attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px;}.chat .item > .attachment > h4{margin:0 0 5px 0;font-weight:600;font-size:14px;}.chat .item > .attachment > p,.chat .item > .attachment > .filename{font-weight:600;font-size:13px;font-style:italic;margin:0;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.box-input{max-width:200px;}.modal .panel-body{color:#444;}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px;}.info-box small{font-size:14px;}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px;}.info-box .progress,.info-box .progress .progress-bar{border-radius:0;}.info-box .progress .progress-bar{background:#fff;}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2);}.info-box-icon > img{max-width:100%;}.info-box-content{padding:5px 10px;margin-left:90px;}.info-box-number{display:block;font-weight:bold;font-size:18px;}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.info-box-text{text-transform:uppercase;}.info-box-more{display:block;}.progress-description{margin:0;}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none;}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px;}.timeline > li{position:relative;margin-right:10px;margin-bottom:15px;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li > .timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative;}.timeline > li > .timeline-item > .time{color:#999;float:right;padding:10px;font-size:12px;}.timeline > li > .timeline-item > .timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1;}.timeline > li > .timeline-item > .timeline-header > a{font-weight:600;}.timeline > li > .timeline-item > .timeline-body,.timeline > li > .timeline-item > .timeline-footer{padding:10px;}.timeline > li > .fa,.timeline > li > .glyphicon,.timeline > li > .ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0;}.timeline > .time-label > span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px;}.timeline-inverse > li > .timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;}.timeline-inverse > li > .timeline-item > .timeline-header{border-bottom-color:#ddd;}.btn{-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent;}.btn.uppercase{text-transform:uppercase;}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px;}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn:focus{outline:none;}.btn.btn-file{position:relative;overflow:hidden;}.btn.btn-file > input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block;}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd;}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7;}.btn-outline{border:1px solid #fff;background:transparent;color:#fff;}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7);}.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2);}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px;}.btn-app > .fa,.btn-app > .glyphicon,.btn-app > .ion{font-size:20px;display:block;}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa;}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-app > .badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400;}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee;}.callout a{color:#fff;text-decoration:underline;}.callout a:hover{color:#eee;}.callout h4{margin-top:0;font-weight:600;}.callout p:last-child{margin-bottom:0;}.callout code,.callout .highlight{background-color:#fff;}.callout.callout-danger{border-color:#d62c1a;}.callout.callout-warning{border-color:#c87f0a;}.callout.callout-info{border-color:#217dbb;}.callout.callout-success{border-color:#128f76;}.alert{border-radius:3px;}.alert h4{font-weight:600;}.alert .icon{margin-right:10px;}.alert .close{color:#000;opacity:0.2;filter:alpha(opacity=20);}.alert .close:hover{opacity:0.5;filter:alpha(opacity=50);}.alert a{color:#fff;text-decoration:underline;}.alert-success{border-color:#15a589;}.alert-danger,.alert-error{border-color:#e43725;}.alert-warning{border-color:#e08e0b;}.alert-info{border-color:#258cd1;}.nav > li > a:hover,.nav > li > a:active,.nav > li > a:focus{color:#444;background:#f7f7f7;}.nav-pills > li > a{border-radius:0;border-top:3px solid transparent;color:#444;}.nav-pills > li > a > .fa,.nav-pills > li > a > .glyphicon,.nav-pills > li > a > .ion{margin-right:5px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{border-top-color:#3c8dbc;}.nav-pills > li.active > a{font-weight:600;}.nav-stacked > li > a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444;}.nav-stacked > li.active > a,.nav-stacked > li.active > a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc;}.nav-stacked > li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase;}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;}.nav-tabs-custom > .nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px;}.nav-tabs-custom > .nav-tabs > li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px;}.nav-tabs-custom > .nav-tabs > li > a{color:#444;border-radius:0;}.nav-tabs-custom > .nav-tabs > li > a.text-muted{color:#999;}.nav-tabs-custom > .nav-tabs > li > a,.nav-tabs-custom > .nav-tabs > li > a:hover{background:transparent;margin:0;}.nav-tabs-custom > .nav-tabs > li > a:hover{color:#999;}.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active{border-color:transparent;}.nav-tabs-custom > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom > .nav-tabs > li.active > a,.nav-tabs-custom > .nav-tabs > li.active:hover > a{background-color:#fff;color:#444;}.nav-tabs-custom > .nav-tabs > li.active > a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4;}.nav-tabs-custom > .nav-tabs > li:first-of-type{margin-left:0;}.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a{border-left-color:transparent;}.nav-tabs-custom > .nav-tabs.pull-right{float:none !important;}.nav-tabs-custom > .nav-tabs.pull-right > li{float:right;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type{margin-right:0;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a{border-left-width:1px;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a{border-left-color:#f4f4f4;border-right-color:transparent;}.nav-tabs-custom > .nav-tabs > li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444;}.nav-tabs-custom > .nav-tabs > li.header > .fa,.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,.nav-tabs-custom > .nav-tabs > li.header > .ion{margin-right:5px;}.nav-tabs-custom > .tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.nav-tabs-custom .dropdown.open > a:active,.nav-tabs-custom .dropdown.open > a:focus{background:transparent;color:#999;}.nav-tabs-custom.tab-primary > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom.tab-info > .nav-tabs > li.active{border-top-color:#3498db;}.nav-tabs-custom.tab-danger > .nav-tabs > li.active{border-top-color:#e74c3c;}.nav-tabs-custom.tab-warning > .nav-tabs > li.active{border-top-color:#f39c12;}.nav-tabs-custom.tab-success > .nav-tabs > li.active{border-top-color:#18bc9c;}.nav-tabs-custom.tab-default > .nav-tabs > li.active{border-top-color:#d2d6de;}.pagination > li > a{background:#fafafa;color:#666;}.pagination.pagination-flat > li > a{border-radius:0 !important;}.products-list{list-style:none;margin:0;padding:0;}.products-list > .item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list .product-img{float:left;}.products-list .product-img img{width:50px;height:50px;}.products-list .product-info{margin-left:60px;}.products-list .product-title{font-weight:600;}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.product-list-in-box > .item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4;}.product-list-in-box > .item:last-of-type{border-bottom-width:0;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{border-top:1px solid #f4f4f4;}.table > thead > tr > th{border-bottom:2px solid #f4f4f4;}.table tr td .progress{margin-top:5px;}.table-bordered{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.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.align th{text-align:left;}.table.align td{text-align:right;}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0;}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-messages{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);padding:10px;height:250px;overflow:auto;}.direct-chat-msg,.direct-chat-text{display:block;}.direct-chat-msg{margin-bottom:10px;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform 0.5s ease-in-out;-moz-transition:-moz-transform 0.5s ease-in-out;-o-transition:-o-transform 0.5s ease-in-out;transition:transform 0.5s ease-in-out;}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444;}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none;}.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-right:50px;margin-left:0;}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de;}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px;}.right .direct-chat-img{float:right;}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px;}.direct-chat-name{font-weight:600;}.direct-chat-timestamp{color:#999;}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-contacts{-webkit-transform:translate(101%,0);-ms-transform:translate(101%,0);-o-transform:translate(101%,0);transform:translate(101%,0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto;}.contacts-list > li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:last-of-type{border-bottom:none;}.contacts-list-img{border-radius:50%;width:40px;float:left;}.contacts-list-info{margin-left:45px;color:#fff;}.contacts-list-name,.contacts-list-status{display:block;}.contacts-list-name{font-weight:600;}.contacts-list-status{font-size:12px;}.contacts-list-date{color:#aaa;font-weight:normal;}.contacts-list-msg{color:#999;}.direct-chat-danger .right > .direct-chat-text{background:#e74c3c;border-color:#e74c3c;color:#fff;}.direct-chat-danger .right > .direct-chat-text:after,.direct-chat-danger .right > .direct-chat-text:before{border-left-color:#e74c3c;}.direct-chat-primary .right > .direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff;}.direct-chat-primary .right > .direct-chat-text:after,.direct-chat-primary .right > .direct-chat-text:before{border-left-color:#3c8dbc;}.direct-chat-warning .right > .direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff;}.direct-chat-warning .right > .direct-chat-text:after,.direct-chat-warning .right > .direct-chat-text:before{border-left-color:#f39c12;}.direct-chat-info .right > .direct-chat-text{background:#3498db;border-color:#3498db;color:#fff;}.direct-chat-info .right > .direct-chat-text:after,.direct-chat-info .right > .direct-chat-text:before{border-left-color:#3498db;}.direct-chat-success .right > .direct-chat-text{background:#18bc9c;border-color:#18bc9c;color:#fff;}.direct-chat-success .right > .direct-chat-text:after,.direct-chat-success .right > .direct-chat-text:before{border-left-color:#18bc9c;}.users-list > li{width:25%;float:left;padding:10px;text-align:center;}.users-list > li img{border-radius:50%;max-width:100%;height:auto;}.users-list > li > a:hover,.users-list > li > a:hover .users-list-name{color:#999;}.users-list-name,.users-list-date{display:block;}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.users-list-date{color:#999;font-size:12px;}.carousel-control.left,.carousel-control.right{background-image:none;}.carousel-control > .fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px;}.modal{background:rgba(0,0,0,0.3);}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0;}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);}}.modal-header{border-bottom-color:#f4f4f4;}.modal-footer{border-top-color:#f4f4f4;}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095;}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a;}.modal-info .modal-header,.modal-info .modal-footer{border-color:#217dbb;}.modal-success .modal-header,.modal-success .modal-footer{border-color:#128f76;}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#d62c1a;}.box-widget{border:none;position:relative;}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2);}.widget-user .widget-user-desc{margin-top:0;}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px;}.widget-user .widget-user-image > img{width:90px;height:auto;border:3px solid #fff;}.widget-user .box-footer{padding-top:30px;}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300;}.widget-user-2 .widget-user-desc{margin-top:0;}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px;}.widget-user-2 .widget-user-image > img{width:65px;height:auto;float:left;}.close,.mailbox-attachment-close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.clearfix:before,.clearfix:after,.content:before,.content:after{content:" ";display:table;}.clearfix:after,.content:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}.mailbox-messages > .table{margin:0;}.mailbox-controls{padding:5px;}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4;}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px;}.mailbox-read-info h3{font-size:20px;margin:0;}.mailbox-read-info h5{margin:0;padding:5px 0 0 0;}.mailbox-read-time{color:#999;font-size:13px;}.mailbox-read-message{padding:10px;}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px;}.mailbox-attachment-name{font-weight:bold;color:#666;}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block;}.mailbox-attachment-info{padding:10px;background:#f4f4f4;}.mailbox-attachment-size{color:#999;font-size:12px;}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px;}.mailbox-attachment-icon.has-img{padding:0;}.mailbox-attachment-icon.has-img > img{max-width:100%;height:auto;}.lockscreen{background:#d2d6de;}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.lockscreen-logo a{color:#444;}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px;}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10;}.lockscreen-image > img{border-radius:50%;width:70px;height: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:35px;text-align:center;margin-bottom:25px;font-weight:300;}.login-logo a,.register-logo a{color:#444;}.login-page,.register-page{background:#d2d6de;}.login-box,.register-box{width:360px;margin:7% auto;}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px;}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666;}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777;}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px;}.social-auth-links{margin:10px 0;}.error-page{width:600px;margin:20px auto 0 auto;}@media (max-width:991px){.error-page{width:100%;}}.error-page > .headline{float:left;font-size:100px;font-weight:300;}@media (max-width:991px){.error-page > .headline{float:none;text-align:center;}}.error-page > .error-content{margin-left:190px;display:block;}@media (max-width:991px){.error-page > .error-content{margin-left:0;}}.error-page > .error-content > h3{font-weight:300;font-size:25px;}@media (max-width:991px){.error-page > .error-content > h3{text-align:center;}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px;}.invoice-title{margin-top:0;}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de;}.profile-username{font-size:21px;margin-top:5px;}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666;}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0;}.post .user-block{margin-bottom:15px;}/* * Social Buttons for Bootstrap * * Copyright 2013-2015 Panayiotis Lipiridis * Licensed under the MIT License * * https://github.com/lipis/bootstrap-social */ .btn-social{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.btn-social > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social.btn-lg{padding-left:57px;}.btn-social.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social.btn-sm{padding-left:36px;}.btn-social.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social.btn-xs{padding-left:29px;}.btn-social.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:31px;width:31px;padding:0;}.btn-social-icon > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social-icon.btn-lg{padding-left:57px;}.btn-social-icon.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social-icon.btn-sm{padding-left:36px;}.btn-social-icon.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social-icon.btn-xs{padding-left:29px;}.btn-social-icon.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon > :first-child{border:none;text-align:center;width:100%;}.btn-social-icon.btn-lg{height:41px;width:41px;padding-left:0;padding-right:0;}.btn-social-icon.btn-sm{height:28px;width:28px;padding-left:0;padding-right:0;}.btn-social-icon.btn-xs{height:21px;width:21px;padding-left:0;padding-right:0;}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active:hover,.btn-adn.active:hover,.open > .dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open > .dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open > .dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{background-image:none;}.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn .badge{color:#d87a68;background-color:#fff;}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open > .dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open > .dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open > .dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{background-image:none;}.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket .badge{color:#205081;background-color:#fff;}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open > .dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open > .dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open > .dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{background-image:none;}.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox .badge{color:#1087dd;background-color:#fff;}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active:hover,.btn-facebook.active:hover,.open > .dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open > .dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open > .dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{background-image:none;}.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook .badge{color:#3b5998;background-color:#fff;}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active:hover,.btn-flickr.active:hover,.open > .dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open > .dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open > .dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{background-image:none;}.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr .badge{color:#ff0084;background-color:#fff;}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open > .dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open > .dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open > .dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{background-image:none;}.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare .badge{color:#f94877;background-color:#fff;}.btn-github{color:#fff;background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active:hover,.btn-github.active:hover,.open > .dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open > .dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open > .dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{background-image:none;}.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github .badge{color:#444444;background-color:#fff;}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active:hover,.btn-google.active:hover,.open > .dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open > .dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open > .dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{background-image:none;}.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google .badge{color:#dd4b39;background-color:#fff;}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active:hover,.btn-instagram.active:hover,.open > .dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open > .dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open > .dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{background-image:none;}.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram .badge{color:#3f729b;background-color:#fff;}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open > .dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open > .dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open > .dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{background-image:none;}.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin .badge{color:#007bb6;background-color:#fff;}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open > .dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open > .dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open > .dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{background-image:none;}.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft .badge{color:#2672ec;background-color:#fff;}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active:hover,.btn-openid.active:hover,.open > .dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open > .dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open > .dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{background-image:none;}.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid .badge{color:#f7931e;background-color:#fff;}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open > .dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open > .dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open > .dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{background-image:none;}.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest .badge{color:#cb2027;background-color:#fff;}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active:hover,.btn-reddit.active:hover,.open > .dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open > .dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open > .dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{background-image:none;}.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit .badge{color:#eff7ff;background-color:#000;}.btn-soundcloud{color:#fff;background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:hover{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open > .dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open > .dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open > .dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{background-image:none;}.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud .badge{color:#ff5500;background-color:#fff;}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open > .dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open > .dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open > .dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{background-image:none;}.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr .badge{color:#2c4762;background-color:#fff;}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active:hover,.btn-twitter.active:hover,.open > .dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open > .dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open > .dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{background-image:none;}.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter .badge{color:#55acee;background-color:#fff;}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open > .dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open > .dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open > .dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{background-image:none;}.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff;}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active:hover,.btn-vk.active:hover,.open > .dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open > .dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open > .dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{background-image:none;}.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk .badge{color:#587ea3;background-color:#fff;}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open > .dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open > .dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open > .dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{background-image:none;}.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo .badge{color:#720e9e;background-color:#fff;}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd;}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9;}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px;}.fc-header-right{padding-right:10px;}.fc-header-left{padding-left:10px;}.fc-widget-header{background:#fafafa;}.fc-grid{width:100%;border:0;}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0;}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0;}.fc-toolbar{padding:10px;margin:0;}.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;margin-right:5px;line-height:30px;}.fc-color-picker > li .fa{-webkit-transition:-webkit-transform linear 0.3s;-moz-transition:-moz-transform linear 0.3s;-o-transition:-o-transform linear 0.3s;transition:transform linear 0.3s;}.fc-color-picker > li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg);}#add-new-event{-webkit-transition:all linear 0.3s;-o-transition:all linear 0.3s;transition:all linear 0.3s;}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move;}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2);}.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none;}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px;}.select2-container--default.select2-container--open{border-color:#3c8dbc;}.select2-dropdown{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white;}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0;}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de;}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc;}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444;}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc;}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7);}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff;}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px;}.pad{padding:10px;}.margin{margin:10px;}.margin-bottom{margin-bottom:20px;}.margin-bottom-none{margin-bottom:0;}.margin-r-5{margin-right:5px;}.inline{display:inline;}.description-block{display:block;margin:10px 0;text-align:center;}.description-block.margin-bottom{margin-bottom:25px;}.description-block > .description-header{margin:0;padding:0;font-weight:600;font-size:16px;}.description-block > .description-text{text-transform:uppercase;}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important;}.bg-gray{color:#000;background-color:#d2d6de !important;}.bg-gray-light{background-color:#f7f7f7;}.bg-black{background-color:#111 !important;}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.modal-danger .modal-body{background-color:#e74c3c !important;}.bg-yellow,.callout.callout-warning,.alert-warning,.modal-warning .modal-body{background-color:#f39c12 !important;}.bg-aqua,.callout.callout-info,.alert-info,.modal-info .modal-body{background-color:#3498db !important;}.bg-blue{background-color:#0073b7 !important;}.bg-light-blue,.modal-primary .modal-body{background-color:#3c8dbc !important;}.bg-green,.callout.callout-success,.alert-success,.modal-success .modal-body{background-color:#18bc9c !important;}.bg-navy{background-color:#001F3F !important;}.bg-teal{background-color:#39CCCC !important;}.bg-olive{background-color:#3D9970 !important;}.bg-lime{background-color:#01FF70 !important;}.bg-orange{background-color:#FF851B !important;}.bg-fuchsia{background-color:#F012BE !important;}.bg-purple{background-color:#605ca8 !important;}.bg-maroon{background-color:#D81B60 !important;}.bg-gray-active{color:#000;background-color:#b5bbc8 !important;}.bg-black-active{background-color:#000000 !important;}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#e43321 !important;}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important;}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#2489cc !important;}.bg-blue-active{background-color:#005384 !important;}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important;}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#15a589 !important;}.bg-navy-active{background-color:#001a35 !important;}.bg-teal-active{background-color:#30bbbb !important;}.bg-olive-active{background-color:#368763 !important;}.bg-lime-active{background-color:#00e765 !important;}.bg-orange-active{background-color:#ff7701 !important;}.bg-fuchsia-active{background-color:#db0ead !important;}.bg-purple-active{background-color:#555299 !important;}.bg-maroon-active{background-color:#ca195a !important;}[class^="bg-"].disabled{opacity:0.65;filter:alpha(opacity=65);}.text-red{color:#e74c3c !important;}.text-yellow{color:#f39c12 !important;}.text-aqua{color:#3498db !important;}.text-blue{color:#0073b7 !important;}.text-black{color:#111 !important;}.text-light-blue{color:#3c8dbc !important;}.text-green{color:#18bc9c !important;}.text-gray{color:#d2d6de !important;}.text-navy{color:#001F3F !important;}.text-teal{color:#39CCCC !important;}.text-olive{color:#3D9970 !important;}.text-lime{color:#01FF70 !important;}.text-orange{color:#FF851B !important;}.text-fuchsia{color:#F012BE !important;}.text-purple{color:#605ca8 !important;}.text-maroon{color:#D81B60 !important;}.link-muted{color:#7a869d;}.link-muted:hover,.link-muted:focus{color:#606c84;}.link-black{color:#666;}.link-black:hover,.link-black:focus{color:#999;}.hide{display:none !important;}.no-border{border:0 !important;}.no-padding{padding:0 !important;}.no-margin{margin:0 !important;}.no-shadow{box-shadow:none !important;}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0;}.list-group-unbordered > .list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0;}.flat{border-radius:0 !important;}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700;}.text-sm{font-size:12px;}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important;}.bg-teal-gradient{background:#39CCCC !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#39CCCC),color-stop(1,#7adddd)) !important;background:-ms-linear-gradient(bottom,#39CCCC,#7adddd) !important;background:-moz-linear-gradient(center bottom,#39CCCC 0%,#7adddd 100%) !important;background:-o-linear-gradient(#7adddd,#39CCCC) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd',endColorstr='#39CCCC',GradientType=0) !important;color:#fff;}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3c8dbc),color-stop(1,#67a8ce)) !important;background:-ms-linear-gradient(bottom,#3c8dbc,#67a8ce) !important;background:-moz-linear-gradient(center bottom,#3c8dbc 0%,#67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce,#3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce',endColorstr='#3c8dbc',GradientType=0) !important;color:#fff;}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#0073b7),color-stop(1,#0089db)) !important;background:-ms-linear-gradient(bottom,#0073b7,#0089db) !important;background:-moz-linear-gradient(center bottom,#0073b7 0%,#0089db 100%) !important;background:-o-linear-gradient(#0089db,#0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db',endColorstr='#0073b7',GradientType=0) !important;color:#fff;}.bg-aqua-gradient{background:#3498db !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3498db),color-stop(1,#52a7e0)) !important;background:-ms-linear-gradient(bottom,#3498db,#52a7e0) !important;background:-moz-linear-gradient(center bottom,#3498db 0%,#52a7e0 100%) !important;background:-o-linear-gradient(#52a7e0,#3498db) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#52a7e0',endColorstr='#3498db',GradientType=0) !important;color:#fff;}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#f39c12),color-stop(1,#f7bc60)) !important;background:-ms-linear-gradient(bottom,#f39c12,#f7bc60) !important;background:-moz-linear-gradient(center bottom,#f39c12 0%,#f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60,#f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60',endColorstr='#f39c12',GradientType=0) !important;color:#fff;}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#605ca8),color-stop(1,#9491c4)) !important;background:-ms-linear-gradient(bottom,#605ca8,#9491c4) !important;background:-moz-linear-gradient(center bottom,#605ca8 0%,#9491c4 100%) !important;background:-o-linear-gradient(#9491c4,#605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4',endColorstr='#605ca8',GradientType=0) !important;color:#fff;}.bg-green-gradient{background:#18bc9c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#18bc9c),color-stop(1,#1cdcb6)) !important;background:-ms-linear-gradient(bottom,#18bc9c,#1cdcb6) !important;background:-moz-linear-gradient(center bottom,#18bc9c 0%,#1cdcb6 100%) !important;background:-o-linear-gradient(#1cdcb6,#18bc9c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1cdcb6',endColorstr='#18bc9c',GradientType=0) !important;color:#fff;}.bg-red-gradient{background:#e74c3c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#e74c3c),color-stop(1,#ed7669)) !important;background:-ms-linear-gradient(bottom,#e74c3c,#ed7669) !important;background:-moz-linear-gradient(center bottom,#e74c3c 0%,#ed7669 100%) !important;background:-o-linear-gradient(#ed7669,#e74c3c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed7669',endColorstr='#e74c3c',GradientType=0) !important;color:#fff;}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#111),color-stop(1,#2b2b2b)) !important;background:-ms-linear-gradient(bottom,#111,#2b2b2b) !important;background:-moz-linear-gradient(center bottom,#111 0%,#2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b,#111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b',endColorstr='#111',GradientType=0) !important;color:#fff;}.bg-maroon-gradient{background:#D81B60 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#D81B60),color-stop(1,#e73f7c)) !important;background:-ms-linear-gradient(bottom,#D81B60,#e73f7c) !important;background:-moz-linear-gradient(center bottom,#D81B60 0%,#e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c,#D81B60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c',endColorstr='#D81B60',GradientType=0) !important;color:#fff;}.description-block .description-icon{font-size:16px;}.no-pad-top{padding-top:0;}.position-static{position:static !important;}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666;}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0;}.list-link > a{padding:4px;color:#777;}.list-link > a:hover{color:#222;}.font-light{font-weight:300;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block img{width:40px;height:40px;float:left;}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px;}.user-block .username{font-size:16px;font-weight:600;}.user-block .description{color:#999;font-size:13px;}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px;}.user-block.user-block-sm .username{font-size:14px;}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left;}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important;}.img-sm + .img-push{margin-left:40px;}.img-md{width:60px;height:60px;}.img-md + .img-push{margin-left:70px;}.img-lg{width:100px;height:100px;}.img-lg + .img-push{margin-left:110px;}.img-bordered{border:3px solid #d2d6de;padding:3px;}.img-bordered-sm{border:2px solid #d2d6de;padding:2px;}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7;}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left;}.attachment-block .attachment-pushed{margin-left:110px;}.attachment-block .attachment-heading{margin:0;}.attachment-block .attachment-text{color:#555;}.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:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px;}.full-opacity-hover{opacity:0.65;filter:alpha(opacity=65);}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100);}.chart{position:relative;overflow:hidden;width:100%;}.chart svg,.chart canvas{width:100% !important;}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important;}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0,0) !important;-ms-transform:translate(0,0) !important;-o-transform:translate(0,0) !important;transform:translate(0,0) !important;}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important;}.invoice{width:100%;border:0;margin:0;padding:0;}.invoice-col{float:left;width:33.3333333%;}.table-responsive{overflow:auto;}.table-responsive > .table tr th,.table-responsive > .table tr td{white-space:normal !important;}}.skin-green .main-header .navbar{background-color:#18bc9c;}.skin-green .main-header .navbar .nav > li > a{color:#fff;}.skin-green .main-header .navbar .nav > li > a:hover,.skin-green .main-header .navbar .nav > li > a:active,.skin-green .main-header .navbar .nav > li > a:focus,.skin-green .main-header .navbar .nav .open > a,.skin-green .main-header .navbar .nav .open > a:hover,.skin-green .main-header .navbar .nav .open > a:focus,.skin-green .main-header .navbar .nav > .active > a{background:rgba(0,0,0,0.1);color:#f6f6f6;}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1);}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#15a589;}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1);}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff;}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#15a589;}}.skin-green .main-header .logo{background-color:#15a589;color:#fff;border-bottom:0 solid transparent;}.skin-green .main-header .logo:hover{background-color:#15a185;}.skin-green .main-header li.user-header{background-color:#18bc9c;}.skin-green .content-header{background:transparent;}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32;}.skin-green .user-panel > .info,.skin-green .user-panel > .info > a{color:#fff;}.skin-green .sidebar-menu > li.header{color:#4b646f;background:#1a2226;}.skin-green .sidebar-menu > li > a{border-left:3px solid transparent;}.skin-green .sidebar-menu > li:hover > a,.skin-green .sidebar-menu > li.active > a{color:#fff;background:#1e282c;border-left-color:#18bc9c;}.skin-green .sidebar-menu > li > .treeview-menu{margin:0 1px;background:#2c3b41;}.skin-green .sidebar a{color:#b8c7ce;}.skin-green .sidebar a:hover{text-decoration:none;}.skin-green .treeview-menu > li > a{color:#8aa4af;}.skin-green .treeview-menu > li.active > a,.skin-green .treeview-menu > li > a:hover{color:#fff;}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;background-color:#374850;margin:10px 10px;}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{background-color:#fff;color:#666;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn{background:#fff;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{border-left-color:#fff;}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}@font-face{font-family:"iconfont";src:url(../fonts/iconfont/iconfont.eot?t=1487643189178);src:url(../fonts/iconfont/iconfont.eot?t=1487643189178#iefix) format('embedded-opentype'),url(../fonts/iconfont/iconfont.woff?t=1487643189178) format('woff'),url(../fonts/iconfont/iconfont.ttf?t=1487643189178) format('truetype'),url(../fonts/iconfont/iconfont.svg?t=1487643189178#iconfont) format('svg');}.iconfont{font-family:"iconfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.icon-max:before{content:"\e623";}.icon-restore:before{content:"\e624";}.icon-min:before{content:"\e625";}.icon-close:before{content:"\e626";}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font:SIL OFL 1.1,CSS:MIT License) */@font-face{font-family:'FontAwesome';src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../libs/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../libs/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.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;-webkit-border-radius:3px;border-radius: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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);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;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@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}}.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(../libs/layer/dist/theme/default/loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(../libs/layer/dist/theme/default/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(../libs/layer/dist/theme/default/loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(../libs/layer/dist/theme/default/loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(../libs/layer/dist/theme/default/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(../libs/layer/dist/theme/default/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}}.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-pagination:after,.fixed-table-toolbar:after{content:"";display:block;clear:both}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.daterangepicker{position:absolute;color:inherit;background-color:#fff;border-radius:4px;width:278px;padding:4px;margin-top:1px;top:100px;left:20px;}.daterangepicker:before,.daterangepicker:after{position:absolute;display:inline-block;border-bottom-color:rgba(0,0,0,0.2);content:'';}.daterangepicker:before{top:-7px;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid #ccc;}.daterangepicker:after{top:-6px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;}.daterangepicker.opensleft:before{right:9px;}.daterangepicker.opensleft:after{right:10px;}.daterangepicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.openscenter:after{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.opensright:before{left:9px;}.daterangepicker.opensright:after{left:10px;}.daterangepicker.dropup{margin-top:-5px;}.daterangepicker.dropup:before{top:initial;bottom:-7px;border-bottom:initial;border-top:7px solid #ccc;}.daterangepicker.dropup:after{top:initial;bottom:-6px;border-bottom:initial;border-top:6px solid #fff;}.daterangepicker.dropdown-menu{max-width:none;z-index:3001;}.daterangepicker.single .ranges,.daterangepicker.single .calendar{float:none;}.daterangepicker.show-calendar .calendar{display:block;}.daterangepicker .calendar{display:none;max-width:270px;margin:4px;}.daterangepicker .calendar.single .calendar-table{border:none;}.daterangepicker .calendar th,.daterangepicker .calendar td{white-space:nowrap;text-align:center;min-width:32px;}.daterangepicker .calendar-table{border:1px solid #fff;padding:4px;border-radius:4px;background-color:#fff;}.daterangepicker table{width:100%;margin:0;}.daterangepicker td,.daterangepicker th{text-align:center;width:20px;height:20px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer;}.daterangepicker td.available:hover,.daterangepicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit;}.daterangepicker td.week,.daterangepicker th.week{font-size:80%;color:#ccc;}.daterangepicker td.off,.daterangepicker td.off.in-range,.daterangepicker td.off.start-date,.daterangepicker td.off.end-date{background-color:#fff;border-color:transparent;color:#999;}.daterangepicker td.in-range{background-color:#ebf4f8;border-color:transparent;color:#000;border-radius:0;}.daterangepicker td.start-date{border-radius:4px 0 0 4px;}.daterangepicker td.end-date{border-radius:0 4px 4px 0;}.daterangepicker td.start-date.end-date{border-radius:4px;}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#357ebd;border-color:transparent;color:#fff;}.daterangepicker th.month{width:auto;}.daterangepicker td.disabled,.daterangepicker option.disabled{color:#999;cursor:not-allowed;text-decoration:line-through;}.daterangepicker select.monthselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default;}.daterangepicker select.monthselect{margin-right:2%;width:56%;}.daterangepicker select.yearselect{width:40%;}.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.secondselect,.daterangepicker select.ampmselect{width:50px;margin-bottom:0;}.daterangepicker .input-mini{border:1px solid #ccc;border-radius:4px;color:#555;height:30px;line-height:30px;display:block;vertical-align:middle;margin:0 0 5px 0;padding:0 6px 0 28px;width:100%;}.daterangepicker .input-mini.active{border:1px solid #08c;border-radius:4px;}.daterangepicker .daterangepicker_input{position:relative;}.daterangepicker .daterangepicker_input i{position:absolute;left:8px;top:8px;}.daterangepicker.rtl .input-mini{padding-right:28px;padding-left:6px;}.daterangepicker.rtl .daterangepicker_input i{left:auto;right:8px;}.daterangepicker .calendar-time{text-align:center;margin:5px auto;line-height:30px;position:relative;padding-left:28px;}.daterangepicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed;}.ranges{font-size:11px;float:none;margin:4px;text-align:left;}.ranges ul{list-style:none;margin:0 auto;padding:0;width:100%;}.ranges li{font-size:13px;background-color:#f5f5f5;border:1px solid #f5f5f5;border-radius:4px;color:#08c;padding:3px 12px;margin-bottom:8px;cursor:pointer;}.ranges li:hover{background-color:#08c;border:1px solid #08c;color:#fff;}.ranges li.active{background-color:#08c;border:1px solid #08c;color:#fff;}@media (min-width:564px){.daterangepicker{width:auto;}.daterangepicker .ranges ul{width:160px;}.daterangepicker.single .ranges ul{width:100%;}.daterangepicker.single .calendar.left{clear:none;}.daterangepicker.single.ltr .ranges,.daterangepicker.single.ltr .calendar{float:left;}.daterangepicker.single.rtl .ranges,.daterangepicker.single.rtl .calendar{float:right;}.daterangepicker.ltr{direction:ltr;text-align:left;}.daterangepicker.ltr .calendar.left{clear:left;margin-right:0;}.daterangepicker.ltr .calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.ltr .calendar.right{margin-left:0;}.daterangepicker.ltr .calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.ltr .left .daterangepicker_input{padding-right:12px;}.daterangepicker.ltr .calendar.left .calendar-table{padding-right:12px;}.daterangepicker.ltr .ranges,.daterangepicker.ltr .calendar{float:left;}.daterangepicker.rtl{direction:rtl;text-align:right;}.daterangepicker.rtl .calendar.left{clear:right;margin-left:0;}.daterangepicker.rtl .calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.rtl .calendar.right{margin-right:0;}.daterangepicker.rtl .calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.rtl .left .daterangepicker_input{padding-left:12px;}.daterangepicker.rtl .calendar.left .calendar-table{padding-left:12px;}.daterangepicker.rtl .ranges,.daterangepicker.rtl .calendar{text-align:right;float:right;}}@media (min-width:730px){.daterangepicker .ranges{width:auto;}.daterangepicker.ltr .ranges{float:left;}.daterangepicker.rtl .ranges{float:right;}.daterangepicker .calendar.left{clear:none !important;}}.n-inline-block,.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable],.msg-wrap,.n-icon,.n-msg{display:inline-block;*display:inline;*zoom:1;}.nice-validator .msg-container .msg-box{display:block;}.nice-validator .msg-container .msg-wrap{position:static;}.msg-box{position:relative;*zoom:1;}.msg-wrap{position:relative;white-space:nowrap;line-height:16px;font-size:12px;}.msg-wrap,.n-icon,.n-msg{vertical-align:top;}.msg-box .msg-wrap .n-error,.msg-box .msg-wrap .n-ok,.msg-box .msg-wrap .n-tip{display:block;background:none;box-shadow:none;padding:3px 2px;}.n-arrow{position:absolute;overflow:hidden;}.n-arrow b,.n-arrow i{position:absolute;left:0;top:0;border:0;margin:0;padding:0;overflow:hidden;font-weight:400;font-style:normal;font-size:12px;font-family:serif;line-height:14px;_line-height:15px;}.n-arrow i{text-shadow:none;}.n-icon{width:16px;height:16px;overflow:hidden;background-repeat:no-repeat;}.n-msg{display:inline-block;*display:inline;*zoom:1;margin-left:1px;}.n-error{color:#c33;}.n-ok{color:#390;}.n-tip .n-msg,.n-loading{color:#808080;}.n-error .n-icon{background-position:0 0;}.n-ok .n-icon{background-position:-16px 0;}.n-tip .n-icon{background-position:-32px 0;}.n-loading .n-icon{background:url(../libs/nice-validator/dist/images/loading.gif) 0 center no-repeat !important;}.n-top,.n-right,.n-bottom,.n-left{display:inline-block;*display:inline;*zoom:1;line-height:0;vertical-align:top;outline:0;}.n-top .n-arrow,.n-bottom .n-arrow{height:6px;width:12px;left:8px;}.n-left .n-arrow,.n-right .n-arrow{width:6px;height:12px;top:6px;}.n-top{vertical-align:top;}.n-top .msg-wrap{margin-bottom:6px;}.n-top .n-arrow{bottom:-6px;}.n-top .n-arrow b{top:-6px;}.n-top .n-arrow i{top:-7px;}.n-bottom{vertical-align:bottom;}.n-bottom .msg-wrap{margin-top:6px;}.n-bottom .n-arrow{top:-6px;}.n-bottom .n-arrow b{top:-1px;}.n-bottom .n-arrow i{top:0;}.n-left .msg-wrap{right:100%;margin-right:6px;}.n-left .n-arrow{right:-6px;}.n-left .n-arrow b{left:-6px;}.n-left .n-arrow i{left:-7px;}.n-right .msg-wrap{margin-left:6px;}.n-right .n-arrow{left:-6px;}.n-right .n-arrow b{left:1px;}.n-right .n-arrow i{left:2px;}.n-default .n-left,.n-default .n-right{margin-top:5px;}.n-default .n-top .msg-wrap{bottom:100%;}.n-default .n-bottom .msg-wrap{top:100%;}.n-default .msg-wrap{position:absolute;z-index:1;}.n-default .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_default.png);}.n-default .n-tip .n-icon{display:none;}.n-simple .msg-wrap{position:absolute;z-index:1;}.n-simple .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-simple .n-top .msg-wrap{bottom:100%;}.n-simple .n-bottom .msg-wrap{top:100%;}.n-simple .n-left,.n-simple .n-right{margin-top:5px;}.n-simple .n-bottom .msg-wrap{margin-top:3px;}.n-simple .n-tip .n-icon{display:none;}.n-yellow .msg-wrap{position:absolute;z-index:1;padding:4px 6px;font-size:12px;border:1px solid transparent;background-color:#fffcef;border-color:#ffbb76;color:#db7c22;box-shadow:0 1px 3px #ccc;border-radius:2px;}.n-yellow .msg-wrap .n-arrow b{color:#ffbb76;text-shadow:0 0 2px #ccc;}.n-yellow .msg-wrap .n-arrow i{color:#fffcef;}.n-yellow .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-yellow .n-top .msg-wrap{bottom:100%;}.n-yellow .n-bottom .msg-wrap{top:100%;}.n-yellow .n-tip,.n-yellow .n-ok,.n-yellow .n-loading{background-color:#f8fdff;border-color:#ddd;color:#333;box-shadow:0 1px 3px #ccc;}.n-yellow .n-tip .n-arrow b,.n-yellow .n-ok .n-arrow b,.n-yellow .n-loading .n-arrow b{color:#ddd;text-shadow:0 0 2px #ccc;}.n-yellow .n-tip .n-arrow i,.n-yellow .n-ok .n-arrow i,.n-yellow .n-loading .n-arrow i{color:#f8fdff;}@charset "utf-8";.sp_container{border:none;margin:0;padding:0;display:inline-block;position:relative;vertical-align:middle;}.sp_input{background-color:white;border:1px solid #ccc;border-radius:0px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;margin:0 !important;padding:4px 6px;vertical-align:middle;display:block;width:100%;outline:none;box-sizing:border-box;}.sp_input:focus{border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.sp_container_open .sp_input{border-radius:2px !important;}div.sp_button{display:inline-block;border-bottom-right-radius:0;border-top-right-radius:0;cursor:pointer;text-align:center;box-sizing:border-box;border:0;width:24px;height:100%;padding:0;vertical-align:middle;line-height:100%;position:absolute;top:0;right:0;}.sp_container_open > .sp_button{border-bottom-right-radius:0 !important;}div.sp_button span.sp_caret{position:absolute;top:50%;right:12px;margin-top:-1px;vertical-align:middle;display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent;}div.sp_clear_btn{position:absolute;top:0;right:25px;display:block;width:auto;height:100%;cursor:pointer;font-size:18px;color:#666666;font-weight:600;margin:0;padding:5px 0 0 0;box-sizing:border-box;line-height:1;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}div.sp_clear_btn:hover{color:black;font-weight:bold;}div.sp_clear_btn i{font-size:12px;}div.sp_clear_btn.sp_align_right{right:10px;}.sp_result_area{background-color:white;border:1px solid #D6D7D7;display:none;list-style:none;margin:0;padding:0;position:absolute;z-index:100;width:300px;border-radius:2px;}div.sp_result_area.shadowDown{box-shadow:0 3px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 3px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 12px rgba(0,0,0,0.2);}div.sp_result_area.shadowUp{box-shadow:0 -1px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 -1px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 -1px 12px rgba(0,0,0,0.2);}.sp_results{background-color:white;list-style:none;margin:0;padding:3px 0;}.sp_results > li{height:auto !important;line-height:1;margin:0;overflow:hidden;padding:5px 8px;position:relative;text-align:left;white-space:nowrap;font-size:13px;color:black;cursor :pointer;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";}.sp_results > li.sp_message_box{height:30px;line-height:30px;text-align:center;box-sizing:content-box;font-size:14px;cursor:default;}ul.sp_results > li.sp_over{background-color:#53A4EA !important;color:#fff !important;cursor:pointer;}ul.sp_results > li.sp_selected{color:#cccccc;cursor:default;}.sp_control_box{padding:0;height:27px;}.sp_control_box p{margin:0;line-height:27px;padding-left:8px;font-size:14px;font-weight:400;}.sp_control_box button{height:27px;line-height:20px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:13px !important;padding:0 12px;border:0;background:white none;color:#666666;text-align:left;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);outline:none !important;float:right;opacity:.3;}.sp_control_box:hover{background-color:#F8F8F8;}.sp_control_box:hover button{background-color:#F8F8F8;opacity:1;}.sp_control_box:hover button:hover{background-color:#EEEEEE;color:black;}div.sp_container_combo{border:1px solid #CCCCCC;border-radius:0px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-sizing:border-box;}div.sp_container_combo.sp_disabled{box-shadow:none;}div.sp_container_combo.sp_disabled,div.sp_container_combo.sp_disabled ul.sp_element_box,div.sp_container_combo.sp_disabled .sp_input,div.sp_container.sp_disabled .sp_input{background-color:#eeeeee;cursor:not-allowed !important;}div.sp_container.sp_disabled .sp_clear_btn,div.sp_container_combo.sp_disabled ul.sp_element_box span.tag_close{display:none;}div.sp_container_combo.sp_container_open{border-radius:0px;}input.sp_combo_input{border:0 !important;box-shadow:none;background-color:transparent;max-width:100%;padding:0;height:34px !important;line-height:34px !important;min-height:34px !important;}input.sp_combo_input:focus{box-shadow:none;border:0;}input.sp_combo_input[readonly],input.sp_combo_input[disabled]{background-color:white;}ul.sp_element_box{margin:0;padding:3px 0 0 3px;position:relative;overflow:hidden;clear:both;cursor:text;margin-right:24px;list-style:none;height:auto;min-height:25px;}ul.sp_element_box > li{list-style:none;padding:0 5px;margin-right:3px;margin-bottom:2px;float:left;position:relative;box-sizing:content-box;}ul.sp_element_box li.full_width{width:100%;}ul.sp_element_box li.full_width input{width:100% !important;}ul.sp_element_box li.selected_tag{border:1px solid #AAAAAA;border-radius:3px;background-color:#EFEFEF;cursor:pointer;max-width:100%;box-shadow:0 0 2px white inset,0 1px 0 rgba(0,0,0,0.05);height:22px;line-height:22px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}ul.sp_element_box li.selected_tag:hover{background-color:white;border:1px solid #D0D0D0;box-shadow:0 2px 7px rgba(0,0,0,.1);}ul.sp_element_box li.selected_tag i{font-size:12px;color:#AAAAAA;}ul.sp_element_box li.selected_tag i:hover{color:black;}ul.sp_element_box li.input_box{padding:0;margin-top:0;height:24px;min-height:24px;}ul.sp_element_box li.input_box input{height:26px !important;line-height:26px !important;min-height:26px !important;}ul.sp_element_box li.selected_tag span.tag_close{cursor:pointer;margin-left:5px;font-size:14px;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}.sp_results_off{}.sp_input_off{background:#eee;color:#333333;}.sp_hide{display:none;}.sp_navi{background:#eee;border-bottom:1px solid #79b;font-size:13px;font-weight:normal;line-height:1;margin:0;padding:4px;text-align:right;}.sp_navi > p > a:link,.sp_navi > p > a:visited,.sp_navi > p > a:hover,.sp_navi > p > a:active{color:blue;font-weight:normal;margin:0 4px;text-decoration:underline;}.sp_navi > p{color:black;font-size:15px;margin:0;padding-top:4px;text-align:center;}.sp_navi > p > a >.current{color:#00c;font-size:16px;font-weight:bold;}.sp_navi > p >.page_end{color:gray;font-weight:normal;margin:0 4px;}.navi_page,.navi_first,.navi_prev,.navi_next,.navi_last{margin:auto 4px !important;}.sp_navi > .info{margin:0 !important;padding:0 !important;}.sp_container > .sp_select_ng{background:#fcc;}div.sp_container input.sp_input.input-block-level{box-sizing:border-box;height:30px;line-height:30px;min-height:30px;width:100%;}div.sp_container_open .sp_input::-ms-clear{display:none;}input::-ms-clear{display:none;}input::-ms-reveal{display:none;}div.sp_navi > p{font-size:12px;}div.sp_result_area div.sp_pagination{margin:0;padding:0;height:26px;line-height:26px;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;display:block;}div.sp_result_area div.sp_pagination.hide{display:none;}div.sp_result_area div.sp_pagination ul{width:100%;display:inline-block;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;padding:0;}div.sp_result_area div.sp_pagination li{text-align:center;display:inline;box-sizing:border-box;}div.sp_result_area div.sp_pagination>ul>li>a{margin:0;border-radius:0;padding:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;background-color:white;float:left;text-decoration:none;border:0;box-sizing:content-box;color:#666666;font-size:13px;height:26px;line-height:26px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}div.sp_result_area div.sp_pagination li.csFirstPage a,div.sp_result_area div.sp_pagination li.csPreviousPage a,div.sp_result_area div.sp_pagination li.csNextPage a,div.sp_result_area div.sp_pagination li.csLastPage a{width:30px;}div.sp_result_area div.sp_pagination li.csFirstPage a{border-left:0;border-bottom-left-radius:2px;}div.sp_result_area div.sp_pagination li.csLastPage a{border-right:0;border-bottom-right-radius:2px;}div.sp_result_area div.sp_pagination>ul>li>a:hover{color:#000000;background-color:#E8E8E8;}div.sp_result_area div.sp_pagination>ul>li.disabled>a{color:#DDDDDD;cursor:default;}div.sp_result_area div.sp_pagination>ul>li.disabled>a:hover{color:#DDDDDD;background-color:white;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a{width:178px;text-align:center;color:#666666;font-size:14px;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a:hover{background-color:inherit;color:#666666;cursor:default;}@font-face{font-family:"spfont";src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==');src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('embedded-opentype'),url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAi8AAsAAAAADSQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kj9Y21hcAAAAYAAAACoAAACNjWzO3RnbHlmAAACKAAABDQAAAXE0sEAXGhlYWQAAAZcAAAALwAAADYPYaJpaGhlYQAABowAAAAeAAAAJAfeA41obXR4AAAGrAAAABcAAAAsK+oAAGxvY2EAAAbEAAAAGAAAABgIbAmwbWF4cAAABtwAAAAfAAAAIAEaAHhuYW1lAAAG/AAAAUUAAAJtPlT+fXBvc3QAAAhEAAAAdQAAAKCcItv9eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sc4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDznZW7438AQw9zA0AAUZgTJAQAmWQyAeJzFkjEOgkAQRf8KLkoksfIMFJaUnISTUBgSOgsOYuWxPsfAPzs0Bm11Nm+T+ZvMTP4sgD2ATFxFDoQnAiweUkPSM5RJz3FTfsFZSkRPsGbDlh0Hjpzmaln0/k3fRlCt7TG9VK8dDjhquqhuhcT4scZPIvyv9Xuc0n1fM20F/YpGJBzTWTu2UTaOHAVbR96CnSOXwcGx38DRkfPg5NgPmSsHxQsreTV9eJxlVE2MFEUUrq+K6Zpepnum/6bnh/npbrbbze7O6vxtVnZnTeACaNxkjaIbdL2YGAJH9uJhjTEBJMZw0cQDi0JEjSEe8EQMBMRwxKMXIBpN8KjhxBS+HoaNxE7n1ffqe11f1Xuvi2UYe3RPXBEl5rBn2HNsH1thDNo0QpPXECTdFp+GF2Q83zVFEiWBjMKWWIIfam6x3e/Gvia1PEzU0Qna/aTFE/S6A74H7WINKFcrq/bkLlt8golSUv9QHeBfwGtEu/KDWbV/ZtltN53sRs62y7Z9OqtlMlnOd+RNHPWLekaf0NT5TL7iXWlM8QZy5aTy4utGs2q/faJ7rDbp68DmJpxq0/xq2apY9L5XKTp2WRaMbKliRLtdbPy+s+TkavFvjB5OZ70qrooXWJ416ZTtom+ZiIIwTqwBOpOBCWnV4QcDzFstJOKVUgNolIaHSk2gWeIXh4daS8BSi1+cTcdZkWuO2JQrNTtYbFHEImjkF2kkTUGaN8U58TybYnvZEVINerR0RFJeEGo1uEW/45E31iWu1xlgCd1Yulq6N4L9TtAbIE2p7wXtoiei9Muo142pTv9B0otoiV7g0WLpnNhU99GKno1aUPcNxzEs5AHb5D+aNghaNFfS5bAvdV0ipiPm0pPGUr+ZzcgPZIbsRyOLLSoxP0HmM8n3XApngdnwkm2eNWw86O8HDbANfrD/Nw1nTftCuuIRqd/26bmtS3VDZm7dyshti+X+gwf9ZZDHdlCObovvRZ/q0mARSxhzBmk7jeojA8qJYz3ur57VjSkpGpJ5P4GPlzAT8J+DdDvBcCGYoSR5ef5lwfMKw8N5D9m7U3dfxg/T6iD/M5gdx6TfXB4eToNGocNv70zd0XF5Wh0Y98j71CMFFlK1+t0EMfU6NVva8PPONnpC8Vd1Xa3rVVvHSbWh21X9r22ErTGHdycqE+Q5FV0dV8f1iqOL14xtjK0x/T99Ukb6nyU66cWhFNvoCYVv9FSH9NUGTj7Wf4JI+zGHT0mAPNLHKZxKNR9+bWxjtT6mGfXsoz/4r6JC+kx/6ugky39Rm1m3kMUxdSZbcLPYzOIMGYLqDE2lFAVQ32fSH05cE28wi9XZNJthC4xNBmEL/XkM0k6mG8MENDpHcXRzIBZh3LNSzrNcTUZuHe0Bui26iiBWhuthpyoKWLVavTkLqwVR7aiP7YL6ruAGfCtwU2QbDqxdtmPM5fySnxuZenluoc7frDeb9eG52sJcmT9EjVAY1vhbNbXbMdAwbNtQ9wznaK5oGMVyasb3xTX+E/27OVamWoRxl5LQLrq0Z8S04W6/TSVwNegThoYL0jGlWpP4nPp9TTNtSVMm3jHtLM5LcolTaxgFGho5jsFG+f5HnBY5tpPyI3VQeed16mxxekXdUDdWsKSur2ARiyvq+r6nPCxRBG3zX8yJDj54nGNgZGBgAOL3RuU28fw2Xxm4WRhA4JqiviaC/n+AhYE5CsjlYGACiQIA93sITQB4nGNgZGBgbvjfwBDDAmQxMLAwMIBpJMANAEcqAnUAAHicY2FgYGB+ycDAwkAAMzIwAAAnpgEWAAAAAAAAdgCwAUIBiAHIAggCLAKOAsAC4nicY2BkYGDgZshhYGUAASYg5gJCBob/YD4DABRyAZMAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicbYnNDsIgEAb3q8Va8Kav0YNPZMiKsFrZBKmpPr1/N+OcJjPU0BdL/3FosEALgyU6rNDDwmFNmA2nwGcrrHngMfjSz5PPj6Q5bj/xICVwlZcVialufuIYjrW967TrTpJj9Oqy3iTq/j1MlUu4Ej0BvEMlfAAAAA==') format('woff'),url('data:image/ttf;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ydzxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('truetype'),url('data:image/svg;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPCEtLQoyMDEzLTktMzA6IENyZWF0ZWQuCi0tPgo8c3ZnPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgaWNvbmZvbnQKPC9tZXRhZGF0YT4KPGRlZnM+Cgo8Zm9udCBpZD0iaWNvbmZvbnQiIGhvcml6LWFkdi14PSIxMDI0IiA+CiAgPGZvbnQtZmFjZQogICAgZm9udC1mYW1pbHk9Imljb25mb250IgogICAgZm9udC13ZWlnaHQ9IjUwMCIKICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIgogICAgdW5pdHMtcGVyLWVtPSIxMDI0IgogICAgYXNjZW50PSI4OTYiCiAgICBkZXNjZW50PSItMTI4IgogIC8+CiAgICA8bWlzc2luZy1nbHlwaCAvPgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieCIgdW5pY29kZT0ieCIgaG9yaXotYWR2LXg9IjEwMDEiCmQ9Ik0yODEgNTQzcS0yNyAtMSAtNTMgLTFoLTgzcS0xOCAwIC0zNi41IC02dC0zMi41IC0xOC41dC0yMyAtMzJ0LTkgLTQ1LjV2LTc2aDkxMnY0MXEwIDE2IC0wLjUgMzB0LTAuNSAxOHEwIDEzIC01IDI5dC0xNyAyOS41dC0zMS41IDIyLjV0LTQ5LjUgOWgtMTMzdi05N2gtNDM4djk3ek05NTUgMzEwdi01MnEwIC0yMyAwLjUgLTUydDAuNSAtNTh0LTEwLjUgLTQ3LjV0LTI2IC0zMHQtMzMgLTE2dC0zMS41IC00LjVxLTE0IC0xIC0yOS41IC0wLjUKdC0yOS41IDAuNWgtMzJsLTQ1IDEyOGgtNDM5bC00NCAtMTI4aC0yOWgtMzRxLTIwIDAgLTQ1IDFxLTI1IDAgLTQxIDkuNXQtMjUuNSAyM3QtMTMuNSAyOS41dC00IDMwdjE2N2g5MTF6TTE2MyAyNDdxLTEyIDAgLTIxIC04LjV0LTkgLTIxLjV0OSAtMjEuNXQyMSAtOC41cTEzIDAgMjIgOC41dDkgMjEuNXQtOSAyMS41dC0yMiA4LjV6TTMxNiAxMjNxLTggLTI2IC0xNCAtNDhxLTUgLTE5IC0xMC41IC0zN3QtNy41IC0yNXQtMyAtMTV0MSAtMTQuNQp0OS41IC0xMC41dDIxLjUgLTRoMzdoNjdoODFoODBoNjRoMzZxMjMgMCAzNCAxMnQyIDM4cS01IDEzIC05LjUgMzAuNXQtOS41IDM0LjVxLTUgMTkgLTExIDM5aC0zNjh6TTMzNiA0OTh2MjI4cTAgMTEgMi41IDIzdDEwIDIxLjV0MjAuNSAxNS41dDM0IDZoMTg4cTMxIDAgNTEuNSAtMTQuNXQyMC41IC01Mi41di0yMjdoLTMyN3oiIC8+CiAgICAKCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGVjayIgdW5pY29kZT0iJiM1ODkzMjsiIGQ9Ik04NTEuNjA4IDc4MC4yNzljMzEuMDU2IDAgNTYuMzIzLTI1LjI2NyA1Ni4zMjMtNTYuMzI1di02NzkuODg2YzAtMzEuMDU3LTI1LjI2Ni01Ni4zMjQtNTYuMzIzLTU2LjMyNGgtNjc5Ljg4NmMtMzEuMDU4IDAtNTYuMzI1IDI1LjI2Ni01Ni4zMjUgNTYuMzI0bDAgNjc5Ljg4NmMwIDMxLjA1OCAyNS4yNjcgNTYuMzI1IDU2LjMyNSA1Ni4zMjVoNjc5Ljg4Nk04NTEuNjA4IDgzMS40NDVoLTY3OS44ODZjLTU5LjM2NSAwLTEwNy40OS00OC4xMjUtMTA3LjQ5LTEwNy40OXYtNjc5Ljg4NmMwLTU5LjM2NSA0OC4xMjUtMTA3LjQ4OSAxMDcuNDktMTA3LjQ4OWg2NzkuODg2YzU5LjM2NSAwIDEwNy40ODggNDguMTI0IDEwNy40ODggMTA3LjQ4OXY2NzkuODg2YzAgNTkuMzY1LTQ4LjEyMyAxMDcuNDktMTA3LjQ4OCAxMDcuNDl2MHoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWNsZWFyIiB1bmljb2RlPSImIzU5MDIwOyIgZD0iTTg5NS41OSA1NzEuMDgwaC0yNzcuNDg5djE3NS4xMjRjMCA0My43ODEtMzYuNzIxIDc5LjYwMS04MS42MTggNzkuNjAxaC00OC45NjNjLTQ0Ljg5NyAwLTgxLjYyMy0zNS44Mi04MS42MjMtNzkuNjAxdi0xNzUuMTI0aC0yNzcuNDg5Yy0xNy45NTYgMC0zMi42NDUtMTQuMzM2LTMyLjY0NS0zMS44NDZ2LTE1OS4yMDFjMC0xNy41MjEgMTQuNjg5LTMxLjg1MiAzMi42NDUtMzEuODUyaDE2LjMyM3YtMjQ1Ljk3YzAtNzAuMDU3LTE2LjMyMy0xMjguMTc0LTE2LjMyMy0xMjguMTc0IDAtMTcuNTEgMTQuNjk0LTMxLjg0NiAzMi42NDUtMzEuODQ2aDcwMS44OTFjMTcuOTYxIDAgMzIuNjQ1IDE0LjM0MSAzMi42NDUgMzEuODQ2IDAgMC0xNi4zMjMgNjAuNTA4LTE2LjMyMyAxMzEuMzU5djI0Mi43ODVoMTYuMzIzYzE3Ljk2MSAwIDMyLjY0NSAxNC4zMzYgMzIuNjQ1IDMxLjg0NnYxNTkuMjA2YzAgMTcuNTE2LTE0LjY3OSAzMS44NDYtMzIuNjQ1IDMxLjg0NnpNODg1LjExNSA0MDYuMTY0YzAtOC43NTUtNy4zNDItMTUuOTE4LTE2LjMyOC0xNS45MThoLTcxMy41NzRjLTguOTggMC0xNi4zMjMgNy4xNjgtMTYuMzIzIDE1LjkyM3YxMDYuOTIxYzAgOC43NiA3LjM0MiAxNS45MjMgMTYuMzIzIDE1LjkyM2gyOTMuODExdjIwOS4yMzljMCAzMS4wNDMgMjUuMzAzIDQ1LjQ5MSA1Ny4xMzQgNDUuNDkxaDExLjY4OWMzMS44MjYgMCA1Ny4xMjQtMTQuNDQ5IDU3LjEyNC00NS40OTF2LTIwOS4yMzRoMjkzLjgxNmM4Ljk4NiAwIDE2LjMyOC03LjE1OCAxNi4zMjgtMTUuOTIzdi0xMDYuOTI2ek02ODcuNDczIDE5Ni45MzFoLTguMTY2Yy02LjUyMyAwLTEyLjIzNy01LjU3MS0xMi4yMzctMTEuOTR2LTIwMC43MjRoLTEzMC41ODZ2MjAwLjcxOWMwIDYuMzY5LTUuNzA5IDExLjk0LTEyLjI0NyAxMS45NGgtOC4xNTZjLTYuNTIzIDAtMTIuMjM3LTUuNTcxLTEyLjIzNy0xMS45NHYtMjAwLjcyNGgtMTM4Ljc0N3YyMDAuNzI0YzAgNi4zNjktNS43MTQgMTEuOTQtMTIuMjUyIDExLjk0aC04LjE1MWMtNi41MjggMC0xMi4yNDctNS41NzEtMTIuMjQ3LTExLjk0di0yMDAuNzI0aC0xNjAuOTIyczE2LjMyOCA0Ny4wODkgMTYuMzI4IDExNy45Mzl2MjQ1Ljk3NWg2NDguMjk0di0yNDUuOTc1YzAtNzAuODUxIDE2LjMyMy0xMTcuOTM5IDE2LjMyMy0xMTcuOTM5aC0xNTIuNzU1djIwMC43MjRjMCA2LjM2OS01LjcxNCAxMS45NC0xMi4yNDIgMTEuOTR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieHVhbnpob25nIiB1bmljb2RlPSImIzU4OTIwOyIgZD0iTTc2Ljg4MzkxMSA3NDIuODc5OTNjMCA0My4zNzE3MjMgMzUuMDg4MDc2IDc4LjUzMDQwNyA3OC41MjkzODQgNzguNTMwNDA3aDcxMC42MTIwOGM0My4zNzE3MjMgMCA3OC41MzA0MDctMzUuMDg4MDc2IDc4LjUzMDQwNy03OC41MzA0MDd2LTcxMC42MTEwNTdjMC00My4zNzE3MjMtMzUuMDg4MDc2LTc4LjUzMDQwNy03OC41MzA0MDctNzguNTMwNDA3SDE1NS40MTQzMThjLTQzLjM3MDcgMC03OC41MjkzODQgMzUuMDg4MDc2LTc4LjUyOTM4NCA3OC41MzA0MDdWNzQyLjg3OTkzaC0wLjAwMTAyM3ogbTU5LjMyOTEyOC0xNy45MTYwMDl2LTY3NC43NzY5OTJjMC0yMC41Mzk3NjEgMTYuNTkwODMtMzcuMTIwMzU4IDM3LjExOTMzNS0zNy4xMjAzNThoNjc0Ljc3ODAxNWMyMC41Mzc3MTQgMCAzNy4xMTkzMzUgMTYuNTg5ODA3IDM3LjExOTMzNSAzNy4xMjAzNTh2Njc0Ljc3Njk5MmMwIDIwLjUzODczOC0xNi41OTA4MyAzNy4xMjAzNTgtMzcuMTE5MzM1IDM3LjEyMDM1OEgxNzMuMzMxMzUxYy0yMC41Mzg3MzggMC0zNy4xMTgzMTItMTYuNTkxODU0LTM3LjExODMxMi0zNy4xMjAzNTh6TTQwMC41NjAxMzEgMTQzLjk0MzA3OUwxNzcuMjQyNDE5IDM2Ny4yMTY3ODlsNDEuMjE2NjQ1IDQxLjE3MTYxOSAyMjMuMjc2NzgtMjIzLjI3Njc4LTQxLjE3NTcxMy00MS4xNjg1NDl6TTM2My4yOTEzOTQgMTkzLjkwMDc4N2w0MzcuMzAxODY3IDQzNy4zMDU5NiA0My42MDQwMTMtNDMuNTk2ODUtNDM3LjI2NzA3NS00MzcuMzAzOTEzLTI3LjE3ODk1OCAyNy4xMzcwMDMtMTYuNDU5ODQ3IDE2LjQ1Nzh6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaWNvbi1kaXJlY3Rpb24tcmlnaHQiIHVuaWNvZGU9IiYjNTkwMDY7IiBkPSJNNTk4LjA4NiAzNjEuNDUxYzYuMDQ0IDYuMDI4IDkuMzczIDE0LjA0IDkuMzczIDIyLjU2IDAgOC41MjEtMy4zMyAxNi41MjUtOS4zNzEgMjIuNTM2TDE4Mi4wMDQgODIyLjYzYy02LjAzNCA2LjAzNC0xNC4wNTIgOS4zNTQtMjIuNTc5IDkuMzQ5LTguNTEzLTAuMDA1LTE2LjUxLTMuMzI2LTIyLjUxOS05LjM1MS02LjAyNy02LjA0Mi05LjM0Ni0xNC4wNTgtOS4zNDYtMjIuNTcxIDAtOC41MTQgMy4zMi0xNi41MjIgOS4zNDgtMjIuNTUxTDUzMC40MTcgMzg0IDEzNi45MS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhsNDE2LjA4MiA0MTYuMDgxek00MTYuNTM3IDgwMC4wNTdjMC04LjUxNCAzLjMyLTE2LjUyMiA5LjM0OC0yMi41NTFMODE5LjM5MiAzODQgNDI1Ljg4NS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhMODg3LjA2IDM2MS40NTJjNi4wNDQgNi4wMjggOS4zNzMgMTQuMDQgOS4zNzMgMjIuNTYgMCA4LjUyMS0zLjMzIDE2LjUyNS05LjM3MSAyMi41MzZMNDcwLjk4IDgyMi42M2MtNi4wMzQgNi4wMzQtMTQuMDUyIDkuMzU0LTIyLjU3OSA5LjM0OS04LjUxMy0wLjAwNS0xNi41MS0zLjMyNi0yMi41MTktOS4zNTEtNi4wMjYtNi4wNDItOS4zNDUtMTQuMDU4LTkuMzQ1LTIyLjU3MXoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWRpcmVjdGlvbi1sZWZ0IiB1bmljb2RlPSImIzU5MDA5OyIgZD0iTTQyNS45MDkgNDA2LjU0OWMtNi4wNDQtNi4wMjgtOS4zNzMtMTQuMDQtOS4zNzMtMjIuNTYgMC04LjUyMSAzLjMzLTE2LjUyNSA5LjM3MS0yMi41MzZMODQxLjk5LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NiAxNC4wNTggOS4zNDYgMjIuNTcxIDAgOC41MTMtMy4zMiAxNi41MjItOS4zNDggMjIuNTUxTDQ5My41NzcgMzg0bDM5My41MDggMzkzLjUwN2M2LjAyOCA2LjAyOCA5LjM0OCAxNC4wNDEgOS4zNDggMjIuNTYycy0zLjMyIDE2LjUzNC05LjM0OCAyMi41NjJjLTYuMDM0IDYuMDM0LTE0LjA1NCA5LjM1NC0yMi41OCA5LjM0OC04LjUxMi0wLjAwNi0xNi41MDgtMy4zMjYtMjIuNTE0LTkuMzQ4TDQyNS45MDkgNDA2LjU0OXpNNjA3LjQ1Ny0zMi4wNTcwMDAwMDAwMDAwMTZjMCA4LjUxMy0zLjMyIDE2LjUyMi05LjM0OCAyMi41NTFMMjA0LjYwMiAzODQgNTk4LjExIDc3Ny41MDcwMDAwMDAwMDAxYzYuMDI4IDYuMDI4IDkuMzQ4IDE0LjA0MSA5LjM0OCAyMi41NjJzLTMuMzIgMTYuNTM0LTkuMzQ4IDIyLjU2MmMtNi4wMzQgNi4wMzQtMTQuMDU0IDkuMzU0LTIyLjU4IDkuMzQ4LTguNTEyLTAuMDA2LTE2LjUwOC0zLjMyNi0yMi41MTQtOS4zNDhMMTM2LjkzNCA0MDYuNTQ5Yy02LjA0NC02LjAyOC05LjM3My0xNC4wNC05LjM3My0yMi41NiAwLTguNTIxIDMuMzMtMTYuNTI1IDkuMzcxLTIyLjUzNkw1NTMuMDE1LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NSAxNC4wNTkgOS4zNDUgMjIuNTcxeiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPgoKICAgIAogICAgPGdseXBoIGdseXBoLW5hbWU9InlvdTEiIHVuaWNvZGU9IiYjNTkxNDk7IiBkPSJNNzIxLjkyIDQwMS45MmwtMzg0IDM4NGMtMTAuMjQgMTAuMjQtMjUuNiAxMC4yNC0zNS44NCAwcy0xMC4yNC0yNS42IDAtMzUuODRMNjY4LjE2IDM4NCAzMDIuMDggMTcuOTJjLTEwLjI0LTEwLjI0LTEwLjI0LTI1LjYgMC0zNS44NHMyNS42LTEwLjI0IDM1Ljg0IDBsMzg0IDM4NGMxMC4yNCAxMC4yNCAxMC4yNCAyNS42IDAgMzUuODR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iamluZ2dhbyIgdW5pY29kZT0iJiM1ODk0MDsiIGQ9Ik04NDcuNTU0NTYgMjkuOTAwOEgxNzYuNDcxMDRjLTQ1LjAwNDggMC04MS4xNTcxMiAxNy42Mzg0LTk5LjIxMDI0IDQ4LjQwOTYtMTguMDU4MjQgMzAuNzY2MDgtMTUuODYxNzYgNzAuOTU4MDggNi4wNTE4NCAxMTAuMjMzNkw0MjEuOTA4NDggNzk1LjM1MTA0QzQ0My45NTAwOCA4MzQuOTEzMjggNDc2LjcyMzIgODU3LjU4OTc2IDUxMS43OTAwOCA4NTcuNTg5NzZzNjcuODA5MjgtMjIuNjQ1NzYgODkuOTEyMzItNjIuMTcyMTZsMzM4Ljk1NDI0LTYwNi45MzUwNGMyMS45MDg0OC0zOS4yNzU1MiAyNC4xNzE1Mi03OS40MzY4IDYuMDgyNTYtMTEwLjIwMjg4LTE4LjAyNzUyLTMwLjc2NjA4LTU0LjIxMDU2LTQ4LjM3ODg4LTk5LjE4NDY0LTQ4LjM3ODg4ek01MTEuODI1OTIgNzkzLjg5MTg0Yy0xMS4xNTEzNiAwLTIzLjkyMDY0LTExLjA1NDA4LTM0LjI3MzI4LTI5LjU1Nzc2TDEzOC45NTY4IDE1Ny40NjA0OGMtMTAuNjA4NjQtMTkuMDQ2NC0xMy4wOTE4NC0zNi4xNTIzMi02Ljc1MzI4LTQ2Ljk0NTI4IDYuMzQzNjgtMTAuNzY3MzYgMjIuNDg3MDQtMTYuOTQ3MiA0NC4yNzI2NC0xNi45NDcyaDY3MS4wODM1MmMyMS44MjE0NCAwIDM3LjkzOTIgNi4xNDkxMiA0NC4yNzI2NCAxNi45NDcyIDYuMzAyNzIgMTAuNzYyMjQgMy44NTUzNiAyNy44NjgxNi02Ljc4NCA0Ni45MTQ1Nkw1NDYuMDk5MiA3NjQuMzM0MDhjLTEwLjMyNzA0IDE4LjUwMzY4LTIzLjE1Nzc2IDI5LjU1Nzc2LTM0LjI3MzI4IDI5LjU1Nzc2eiBtMC4xODk0NC00NzYuNjQxMjhhMzEuODQ2NCAzMS44NDY0IDAgMCAwLTMxLjg0NjQgMzEuODUxNTJWNjM1Ljc1MDRhMzEuODYxNzYgMzEuODYxNzYgMCAwIDAgMzEuODQ2NCAzMS44NTE1MiAzMS44NjE3NiAzMS44NjE3NiAwIDAgMCAzMS44NTE1Mi0zMS44NTE1MnYtMjg2LjY1MzQ0YTMxLjg0NjQgMzEuODQ2NCAwIDAgMC0zMS44NTE1Mi0zMS44NDY0ek01MTIgMjA4LjM4OTEybS00Ny4zMzk1MiAwYTQ3LjMzOTUyIDQ3LjMzOTUyIDAgMSAxIDk0LjY3OTA0IDAgNDcuMzM5NTIgNDcuMzM5NTIgMCAxIDEtOTQuNjc5MDQgMFoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJub3ZpZ29fbGVmdCIgdW5pY29kZT0iJiM1ODk3MDsiIGQ9Ik0yNjQuNzAwMTQ5IDM1OC4yODczODVhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhjLTguOTkxNzkyIDguOTkxNzkyLTguOTkxNzkyIDIzLjU2OTgxMiAwIDMyLjU2MTYwM2w0MjAuNzkyNzE4IDQyMC43OTM3NDJjOC45OTE3OTIgOC45OTE3OTIgMjMuNTY5ODEyIDguOTkxNzkyIDMyLjU2MTYwMyAwIDguOTkwNzY4LTguOTkxNzkyIDguOTkwNzY4LTIzLjU2OTgxMiAwLTMyLjU2MDU4bC00MjAuNzkzNzQxLTQyMC43OTQ3NjVhMjIuOTQ3NjQxIDIyLjk0NzY0MSAwIDAgMC0xNi4yNzk3NzktNi43NDM1ODh6TTY4NS40OTM4OTEtNjIuNTA2MzU2OTk5OTk5OThhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhsLTQyMC43OTM3NDIgNDIwLjc5NDc2NWMtOC45OTE3OTIgOC45OTE3OTItOC45OTE3OTIgMjMuNTY5ODEyIDAgMzIuNTYxNjA0IDguOTkwNzY4IDguOTkwNzY4IDIzLjU2OTgxMiA4Ljk5MDc2OCAzMi41NjA1OCAwbDQyMC43OTM3NDEtNDIwLjc5Mzc0MmM4Ljk5MDc2OC04Ljk5MTc5MiA4Ljk5MDc2OC0yMy41Njk4MTIgMC0zMi41NjE2MDRhMjIuOTQ4NjY1IDIyLjk0ODY2NSAwIDAgMC0xNi4yNzk3NzgtNi43NDQ2MTF6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGltZXMiIHVuaWNvZGU9IiYjNTg4ODA7IiBkPSJNOTA3LjUxIDY3LjU5NTAwMDAwMDAwMDAzbC03OS4xMDEtNzkuMTAyLTMxNi40MDYgMzE2LjQwNS0zMTYuNDA1LTMxNi40MDUtNzkuMTA0IDc5LjEwMkw0MzIuODk5IDM4NCAxMTYuNDk0IDcwMC40MDVsNzkuMTA0IDc5LjA5OSAzMTYuNDA1LTMxNi40MDVMODI4LjQxIDc3OS41MDRsNzkuMDk4LTc5LjA5OUw1OTEuMTAyIDM4NGwzMTYuNDA1LTMxNi40MDV6IiAgaG9yaXotYWR2LXg9IjEwMjUiIC8+CgogICAgCgoKICA8L2ZvbnQ+CjwvZGVmcz48L3N2Zz4K') format('svg');}.spfont{font-family:"spfont" !important;font-size:14px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.sp-unselect-all:before{content:"\e634";}.sp-clear:before{content:"\e68c";}.sp-select-all:before{content:"\e628";}.sp-last:before{content:"\e67e";}.sp-first:before{content:"\e681";}.sp-next:before{content:"\e70d";}.sp-warning:before{content:"\e63c";}.sp-previous:before{content:"\e65a";}.sp-close:before{content:"\e600";}body{background:#f1f4f6;}body.is-dialog{background:#fff;}.selection{position:absolute;border:1px solid #8B9;background-color:#BEC;}.main-header .logo,.main-header .navbar{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.main-header .navbar{position:relative;}.main-header .navbar .sidebar-toggle{position:absolute;width:45px;text-align:center;}.main-header .navbar #nav{position:absolute;left:45px;}.main-header .navbar .navbar-custom-menu{position:absolute;right:0;}.bootstrap-dialog .modal-dialog{max-width:885px;}html.ios-fix,html.ios-fix body{height:100%;overflow:auto;-webkit-overflow-scrolling:touch;}.content{min-height:500px;}#header{background:#fff;box-shadow:0 2px 2px rgba(0,0,0,0.05),0 1px 0 rgba(0,0,0,0.05);}.content-wrapper{position:relative;}.control-relative{position:relative;}.tab-addtabs{overflow:hidden;}.tab-addtabs .tab-pane{height:100%;width:100%;}.row-between .col-xs-6 + .col-xs-6:before{content:"-";position:absolute;left:-2%;top:6px;}@media only screen and (min-width:481px){.row-flex{display:flex;flex-wrap:wrap;}.row-flex > [class*='col-']{display:flex;flex-direction:column;}.row-flex.row:after,.row-flex.row:before{display:flex;}}@media (max-width:991px){.main-header .navbar-custom-menu a.btn-danger{color:#fff;background-color:#e74c3c;}.main-header .navbar-custom-menu a.btn-primary{color:#fff;background-color:#2c3e50;}}.common-search-table{min-height:20px;padding:15px;margin-bottom:15px;background-color:#f5f5f5;}.searchit{border-bottom:1px dashed #3c8dbc;}.fixed-footer{position:fixed;bottom:0;background-color:#ecf0f1;width:100%;margin-bottom:0;padding:10px;}.layer-footer{display:none;}table.table-template{overflow:hidden;}.sp_container .msg-box{position:absolute;right:0;top:0;}.toast-top-right-index{top:62px;right:12px;}.bootstrap-select .status{background:#f0f0f0;clear:both;color:#999;font-size:12px;font-weight:500;line-height:1;margin-bottom:-5px;padding:10px 20px;}.img-center{margin:0 auto;display:inline;float:none;}#ribbon{overflow:hidden;padding:15px 15px 0 15px;position:relative;}#ribbon a{color:#777 !important;text-decoration:none !important;}#ribbon .breadcrumb{display:inline-block;margin:0;padding:0;background:none;vertical-align:top;}#ribbon .breadcrumb > .active,#ribbon .breadcrumb li{color:#aaa;}#ribbon .shortcut a{margin-left:10px;}.is-dialog #main{background:#fff;}form.form-horizontal .control-label{font-weight:normal;}.user-panel > .image img{width:45px;height:45px;}.panel-intro{margin-bottom:0;border:none;}.panel-intro > .panel-heading{padding:15px;padding-bottom:0;background:#e8edf0;border-color:#e8edf0;position:relative;}.panel-intro > .panel-heading .panel-lead{margin-bottom:15px;}.panel-intro > .panel-heading .panel-lead em{display:block;font-weight:bold;font-style:normal;}.panel-intro > .panel-heading .panel-title{height:25px;font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.panel-intro > .panel-heading .panel-control{height:42px;position:absolute;top:8px;right:8px;}.panel-intro > .panel-heading .panel-control .fa{font-size:14px;}.panel-intro > .panel-heading .nav-tabs{border-bottom:0;margin-bottom:0;}.panel-intro > .panel-heading .nav-tabs > li > a{margin-right:4px;color:#95a5a6;background-color:#d8e0e6;border:1px solid #e8edf0;border-bottom-color:transparent;}.panel-intro > .panel-heading .nav-tabs > li > a:hover,.panel-intro > .panel-heading .nav-tabs > li > a:focus{border:1px solid #e8edf0;color:#7b8a8b;background-color:#c9d4dc;}.panel-intro > .panel-heading .nav-tabs > li.active > a,.panel-intro > .panel-heading .nav-tabs > li.active > a:hover,.panel-intro > .panel-heading .nav-tabs > li.active > a:focus{color:#7b8a8b;background-color:#ffffff;border-bottom-color:transparent;cursor:default;}.panel-tabs .panel-heading{padding:12px 15px 12px 15px;}.panel-tabs .panel-heading .panel-lead{margin-bottom:0px;}.panel-nav .panel-heading{padding:0px;padding-bottom:0;background:#f1f4f6;border-color:#f1f4f6;}.panel-nav .nav-tabs > li > a{padding:12px 15px;background-color:#e8edf0;border:1px solid #f1f4f6;}.panel-nav .nav-tabs > li > a:hover,.panel-nav .nav-tabs > li > a:focus{border:1px solid #e8edf0;background-color:#e8edf0;}.panel-nav .nav-tabs > li.active > a,.panel-nav .nav-tabs > li.active > a:hover,.panel-nav .nav-tabs > li.active > a:focus{border-color:#f1f4f6;border-bottom-color:transparent;}.nav-addtabs{border:none;}.nav-addtabs.disable-top-badge > li > a > .pull-right-container{display:none;}.nav-addtabs > li{margin:0;}.nav-addtabs > li > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);margin:0;color:#95a5a6;}.nav-addtabs > li > a:hover,.nav-addtabs > li > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs > li > a i{margin-right:3px;}.nav-addtabs > li.active > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;color:#2c3e50;overflow:hidden;}.nav-addtabs > li.active > a:hover,.nav-addtabs > li.active > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;}.nav-addtabs > li .close-tab{font-size:10px;position:absolute;right:5px;top:50%;margin-top:-7px;z-index:100;cursor:hand;cursor:pointer;color:#fff;display:none;}.nav-addtabs .open > a:hover,.nav-addtabs .open > a:focus{border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs ul li{position:relative;}.nav-addtabs li:hover > .close-tab{display:block;}.main-sidebar .sidebar-form{overflow:visible;}.main-sidebar .sidebar-form .menuresult{z-index:999;position:absolute;top:34px;left:-1px;width:100%;max-height:250px;overflow:auto;margin:0;border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.main-sidebar .sidebar-form .menuresult a{border-top:1px solid #eee;background-color:#fff;border-bottom:1px solid #eee;margin-bottom:-1px;display:block;padding:10px 15px;color:#222d32;}.main-sidebar .sidebar-form .menuresult a:hover{background:#eee;}.input-group .sp_result_area{width:100%;}.sidebar-menu.show-submenu .treeview-menu{display:block;}.sidebar-menu > li .badge{margin-top:0;}.sidebar-collapse .user-panel > .image img{width:25px;height:25px;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:41px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{top:7px!important;height:17px;}}.fieldlist dd{display:block;margin:5px 0;}.fieldlist dd input{display:inline-block;width:300px;}.fieldlist dd input:first-child{width:110px;}.fieldlist dd ins{width:110px;display:inline-block;text-decoration:none;font-weight:bold;}.form-layer{height:100%;min-height:150px;min-width:300px;}.form-layer .form-body{width:100%;overflow:auto;top:0;position:absolute;z-index:10;bottom:50px;padding:15px;}.form-layer .form-footer{height:50px;line-height:50px;background-color:#ecf0f1;width:100%;position:absolute;z-index:200;bottom:0;margin:0;}.form-layer .form-footer .form-group{margin-left:0;margin-right:0;}#treeview .jstree-container-ul .jstree-node{display:block;clear:both;}#treeview .jstree-leaf:not(:first-child){float:left;background:none;margin-left:0;width:80px;clear:none;}#treeview .jstree-leaf{float:left;margin-left:0;padding-left:24px;width:80px;clear:none;color:#777;}#treeview .jstree-leaf > .jstree-icon,#treeview .jstree-leaf .jstree-themeicon{display:none;}#treeview .jstree-last{background-image:url("../img/32px.png");background-position:-292px -4px;background-repeat:repeat-y;}#treeview .jstree-children:before,#treeview .jstree-children:after{content:" ";display:table;}#treeview .jstree-children:after{clear:both;}#treeview .jstree-themeicon{display:none;}.fixed-table-container{border:none!important;}.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable]{display:inline-block;*display:inline;*zoom:1;}.nice-validator .note-editor .note-editing-area .note-editable{display:inherit;}.plupload-preview{padding:0 10px;margin-bottom:0;}.plupload-preview li{margin-top:15px;}.plupload-preview .thumbnail{margin-bottom:10px;}.plupload-preview a{display:block;}.plupload-preview a:first-child{height:90px;}.plupload-preview a img{height:80px;object-fit:cover;}.pjax-loader-bar .progress{position:fixed;top:0;left:0;height:2px;background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,0.7);-webkit-transition:width 0.4s ease;transition:width 0.4s ease;}.dropdown-menu.text-left a,.dropdown-menu.text-left li{text-align:left!important;}.bootstrap-table .fixed-table-toolbar .dropdown-menu{overflow:auto;}.toolbar{margin-top:10px;margin-bottom:10px;}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{line-height:inherit;}.fixed-table-toolbar .toolbar{margin-top:0;margin-bottom:0;}.bootstrap-table table tbody tr:first-child td .bs-checkbox{vertical-align:middle;}.bootstrap-table td.bs-checkbox{vertical-align:middle;}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{overflow:auto;top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:0 6px 6px 6px;-moz-background-clip:padding;border-radius:0 6px 6px 6px;background-clip:padding-box;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:6px 0 6px 6px;-moz-background-clip:padding;border-radius:6px 0 6px 6px;background-clip:padding-box;}.toast-primary{background-color:#48c9b0!important;}.toast-success{background-color:#18bc9c!important;}.toast-error{background-color:#e74c3c!important;}.toast-info{background-color:#5dade2!important;}.toast-warning{background-color:#f1c40f!important;}.toast-inverse{background-color:#34495e!important;}.toast-default{background-color:#bdc3c7!important;}#toast-container > div,#toast-container > div:hover{-webkit-box-shadow:0 0 3px #eee;-moz-box-shadow:0 0 3px #eee;box-shadow:0 0 3px #eee;}.layui-layer-fast{}.layui-layer-fast .layui-layer-title{background:#2c3e50!important;color:#fff!important;border-bottom:none;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin{top:0px;height:42px;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin > a{height:42px;line-height:42px;display:inline-block;}.layui-layer-fast.layui-layer-border{border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,0.3) !important;}.layui-layer-fast.layui-layer-iframe{overflow:visible;}.layui-layer-fast .layui-layer-moves{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}.layui-layer-fast .layui-layer-btn{text-align:center!important;padding:10px!important;background:#ecf0f1;overflow:hidden;}.layui-layer-fast .layui-layer-btn a{background-color:#95a5a6;border-color:#95a5a6;color:#fff!important;height:31px;margin-top:0;border:1px solid transparent;}.layui-layer-fast .layui-layer-btn .layui-layer-btn0{background-color:#18bc9c;border-color:#18bc9c;}.layui-layer-fast .layui-layer-footer{padding:8px 20px;background-color:#ecf0f1;height:auto;text-align:inherit!important;}.layui-layer-fast .layui-layer-setwin > a{background:none!important;}.layui-layer-fast .layui-layer-setwin > a cite{display:none;}.layui-layer-fast .layui-layer-setwin > a:after{content:"\e625";font-family:iconfont;font-style:normal;font-weight:normal;text-decoration:inherit;position:absolute;font-size:18px;color:#fff;margin:0;z-index:1;}.layui-layer-fast .layui-layer-setwin > a:hover{text-decoration:none!important;background:none!important;}.layui-layer-fast .layui-layer-setwin > a:focus{text-decoration:none!important;}.layui-layer-fast .layui-layer-setwin .layui-layer-min{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-min:after{content:"\e625";}.layui-layer-fast .layui-layer-setwin .layui-layer-max{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-max:after{content:"\e623";}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin:after{content:"\e624";}.layui-layer-fast .layui-layer-setwin .layui-layer-close1:after{content:"\e626";}.layui-layer-fast .layui-layer-setwin .layui-layer-close2,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover{background:url('../libs/layer/dist/theme/default/icon.png') no-repeat -149px -31px !important;top:-30px;right:-30px;}.layui-layer-fast .layui-layer-setwin .layui-layer-close2:after,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover:after{display:none;}.layui-layer-content{clear:both;}.layui-layer-fast-msg{min-width:100px;border-radius:2px;background-color:rgba(0,0,0,0.6);color:#fff;}.layui-layer-fast-msg .layui-layer-content{padding:12px 25px;text-align:center;}.n-bootstrap .input-group > .n-right{position:absolute;}@media (min-width:564px){body.is-dialog .daterangepicker{min-width:130px;}body.is-dialog .daterangepicker .ranges ul{width:130px;}}@media (max-width:480px){.nav-addtabs{display:none;}.fixed-table-toolbar .columns-right.btn-group{display:none;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}}@media (max-width:768px){.n-bootstrap .n-right{margin-top:0;top:-20px;position:absolute;left:0;text-align:right;width:100%;}.n-bootstrap .n-right .msg-wrap{position:relative;}.n-bootstrap .col-xs-12 > .n-right .msg-wrap{margin-right:15px;}}.radio > label,.checkbox > label{margin-right:10px;}.radio > label > input,.checkbox > label > input{margin:2px 0 0;}.wipecache li a{color:#444444!important;}
\ No newline at end of file
diff --git a/public/assets/css/index.css b/public/assets/css/index.css
index 9e9a992..2ed7028 100644
--- a/public/assets/css/index.css
+++ b/public/assets/css/index.css
@@ -4,7 +4,10 @@ body {
     width: 100%;
 }
 body {
-    font-family: 'Muli', 'Helvetica', 'Arial', 'sans-serif';
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+    font-family: "Roboto", "SF Pro SC", "SF Pro Display", "SF Pro Icons", "PingFang SC", BlinkMacSystemFont, -apple-system, "Segoe UI", "Microsoft Yahei", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+    font-weight: 400;
 }
 a {
     -webkit-transition: all 0.35s;
diff --git a/public/assets/js/backend.js b/public/assets/js/backend.js
index ee400e2..f8791b9 100755
--- a/public/assets/js/backend.js
+++ b/public/assets/js/backend.js
@@ -1,4 +1,4 @@
-define(['fast', 'moment'], function (Fast, Moment) {
+define(['fast', 'template', 'moment'], function (Fast, Template, Moment) {
     var Backend = {
         api: {
             sidebar: function (params) {
@@ -8,13 +8,11 @@ define(['fast', 'moment'], function (Fast, Moment) {
                 $.each(params, function (k, v) {
                     $url = Fast.api.fixurl(k);
 
-                    if ($.isArray(v))
-                    {
+                    if ($.isArray(v)) {
                         $nums = typeof v[0] !== 'undefined' ? v[0] : 0;
                         $color = typeof v[1] !== 'undefined' ? v[1] : colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums];
                         $class = typeof v[2] !== 'undefined' ? v[2] : 'label';
-                    } else
-                    {
+                    } else {
                         $nums = v;
                         $color = colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums];
                         $class = 'label';
@@ -58,7 +56,10 @@ define(['fast', 'moment'], function (Fast, Moment) {
                             var id = Math.floor(new Date().valueOf() * Math.random());
                             icon = typeof icon !== 'undefined' ? icon : 'fa fa-circle-o';
                             title = typeof title !== 'undefined' ? title : '';
-                            top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({url: url, addtabs: id}).addClass("hide").appendTo(top.window.document.body).trigger("click");
+                            top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({
+                                url: url,
+                                addtabs: id
+                            }).addClass("hide").appendTo(top.window.document.body).trigger("click");
                         }
                     }
                 }
@@ -227,6 +228,8 @@ define(['fast', 'moment'], function (Fast, Moment) {
         }
     };
     Backend.api = $.extend(Fast.api, Backend.api);
+    //将Template渲染至全局,以便于在子框架中调用
+    window.Template = Template;
     //将Moment渲染至全局,以便于在子框架中调用
     window.Moment = Moment;
     //将Backend渲染至全局,以便于在子框架中调用
diff --git a/public/assets/js/backend/addon.js b/public/assets/js/backend/addon.js
index 08744b5..a1b0be9 100644
--- a/public/assets/js/backend/addon.js
+++ b/public/assets/js/backend/addon.js
@@ -14,6 +14,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
 
             var table = $("#table");
 
+            table.on('load-success.bs.table', function (e, json) {
+                if (json && typeof json.category != 'undefined' && $(".nav-category li").size() == 2) {
+                    $.each(json.category, function (i, j) {
+                        $("<li><a href='javascript:;' data-id='" + j.id + "'>" + j.name + "</a></li>").insertBefore($(".nav-category li:last"));
+                    });
+                }
+            });
             table.on('post-body.bs.table', function (e, settings, json, xhr) {
                 var parenttable = table.closest('.bootstrap-table');
                 var d = $(".fixed-table-toolbar", parenttable).find(".search input");
@@ -53,19 +60,12 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                 showColumns: false,
                 showToggle: false,
                 showExport: false,
-                commonSearch: false,
-                searchFormVisible: false,
+                showSearch: false,
+                commonSearch: true,
+                searchFormVisible: true,
+                searchFormTemplate: 'searchformtpl',
                 pageSize: 12,
                 pagination: false,
-                queryParams: function (params) {
-                    var filter = params.filter ? JSON.parse(params.filter) : {};
-                    var op = params.op ? JSON.parse(params.op) : {};
-                    filter.faversion = Config.fastadmin.version;
-                    op.faversion = "=";
-                    params.filter = JSON.stringify(filter);
-                    params.op = JSON.stringify(op);
-                    return params;
-                }
             });
 
             // 为表格绑定事件
@@ -124,14 +124,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                     return false;
                 }
             });
-            
-            // 切换URL
+
+            // 切换
             $(document).on("click", ".btn-switch", function () {
                 $(".btn-switch").removeClass("active");
                 $(this).addClass("active");
+                $("form.form-commonsearch input[name='type']").val($(this).data("type"));
                 table.bootstrapTable('refresh', {url: $(this).data("url"), pageNumber: 1});
+                return false;
             });
-            
+            $(document).on("click", ".nav-category li a", function () {
+                $(".nav-category li").removeClass("active");
+                $(this).parent().addClass("active");
+                $("form.form-commonsearch input[name='category_id']").val($(this).data("id"));
+                table.bootstrapTable('refresh', {url: $(this).data("url"), pageNumber: 1});
+                return false;
+            });
+
             // 会员信息
             $(document).on("click", ".btn-userinfo", function () {
                 var userinfo = Controller.api.userinfo.get();
@@ -146,7 +155,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                             Fast.api.ajax({
                                 url: Config.fastadmin.api_url + '/user/login',
                                 dataType: 'jsonp',
-                                data: {account: $("#inputAccount", layero).val(), password: $("#inputPassword", layero).val(), _method: 'POST'}
+                                data: {
+                                    account: $("#inputAccount", layero).val(),
+                                    password: $("#inputPassword", layero).val(),
+                                    _method: 'POST'
+                                }
                             }, function (data, ret) {
                                 Controller.api.userinfo.set(data);
                                 Layer.closeAll();
@@ -199,7 +212,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                 var token = userinfo ? userinfo.token : '';
                 Fast.api.ajax({
                     url: 'addon/install',
-                    data: {name: name, force: force ? 1 : 0, uid: uid, token: token, version: version, faversion: Config.fastadmin.version}
+                    data: {
+                        name: name,
+                        force: force ? 1 : 0,
+                        uid: uid,
+                        token: token,
+                        version: version,
+                        faversion: Config.fastadmin.version
+                    }
                 }, function (data, ret) {
                     Layer.closeAll();
                     Config['addons'][data.addon.name] = ret.data.addon;
diff --git a/public/assets/js/backend/index.js b/public/assets/js/backend/index.js
index 906ead1..6e7fe7b 100755
--- a/public/assets/js/backend/index.js
+++ b/public/assets/js/backend/index.js
@@ -180,10 +180,11 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi
             });
 
             //清除缓存
-            $(document).on('click', "[data-toggle='wipecache']", function () {
+            $(document).on('click', "ul.wipecache li a", function () {
                 $.ajax({
                     url: 'ajax/wipecache',
                     dataType: 'json',
+                    data: {type: $(this).data("type")},
                     cache: false,
                     success: function (ret) {
                         if (ret.hasOwnProperty("code")) {
diff --git a/public/assets/js/bootstrap-table-commonsearch.js b/public/assets/js/bootstrap-table-commonsearch.js
index 9c9162a..7036c40 100644
--- a/public/assets/js/bootstrap-table-commonsearch.js
+++ b/public/assets/js/bootstrap-table-commonsearch.js
@@ -1,9 +1,11 @@
 /**
+ * FastAdmin通用搜索
+ *
  * @author: pppscn <35696959@qq.com>
- * @version: v0.0.1
+ * @update 2017-05-07 <https://gitee.com/pp/fastadmin>
  *
- * @update 2017-05-07 <http://git.oschina.net/pp/fastadmin>
- * @update 2017-09-17 <http://git.oschina.net/karson/fastadmin>
+ * @author: Karson <karsonzhang@163.com>
+ * @update 2018-04-05 <https://gitee.com/karson/fastadmin>
  */
 
 !function ($) {
@@ -17,75 +19,16 @@
         var vFormCommon = createFormCommon(pColumns, that);
 
         var vModal = sprintf("<div class=\"commonsearch-table %s\">", that.options.searchFormVisible ? "" : "hidden");
-        vModal += vFormCommon.join('');
+        vModal += vFormCommon;
         vModal += "</div>";
         that.$container.prepend($(vModal));
         that.$commonsearch = $(".commonsearch-table", that.$container);
         var form = $("form.form-commonsearch", that.$commonsearch);
 
-        //绑定日期时间元素事件
-        if ($(".datetimepicker", form).size() > 0) {
-
-            require(['bootstrap-datetimepicker'], function () {
-                $('.datetimepicker', form).parent().css('position', 'relative');
-                $('.datetimepicker', form).datetimepicker({
-                    //format: 'YYYY-MM-DD',
-                    icons: {
-                        time: 'fa fa-clock-o',
-                        date: 'fa fa-calendar',
-                        up: 'fa fa-chevron-up',
-                        down: 'fa fa-chevron-down',
-                        previous: 'fa fa-chevron-left',
-                        next: 'fa fa-chevron-right',
-                        today: 'fa fa-history',
-                        clear: 'fa fa-trash',
-                        close: 'fa fa-remove'
-                    },
-                    showTodayButton: true,
-                    showClose: true
-                });
-            });
-        }
-        if ($(".datetimerange", form).size() > 0) {
-            var ranges = {};
-            ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')];
-            ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')];
-            ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')];
-            ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')];
-            ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')];
-            ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')];
-            var options = {
-                timePicker: false,
-                autoUpdateInput: false,
-                timePickerSeconds: true,
-                timePicker24Hour: true,
-                autoApply: true,
-                locale: {
-                    format: 'YYYY-MM-DD HH:mm:ss',
-                    customRangeLabel: __("Custom Range"),
-                    applyLabel: __("Apply"),
-                    cancelLabel: __("Clear"),
-                },
-                ranges: ranges,
-            };
-            var callback = function (start, end) {
-                $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format));
-            };
-            var column, index;
-            require(['bootstrap-daterangepicker'], function () {
-                $(".datetimerange", form).each(function () {
-                    $(this).on('apply.daterangepicker', function (ev, picker) {
-                        callback.call(picker, picker.startDate, picker.endDate);
-                    });
-                    $(this).on('cancel.daterangepicker', function (ev, picker) {
-                        $(this).val('');
-                    });
-                    index = $(this).data("index");
-                    column = pColumns[index];
-                    $(this).daterangepicker($.extend({}, options, column.options || {}), callback);
-                });
-            });
-        }
+        require(['form'], function (Form) {
+            Form.api.bindevent(form);
+            form.validator("destroy");
+        });
 
         // 表单提交
         form.on("submit", function (event) {
@@ -103,9 +46,12 @@
     };
 
     var createFormCommon = function (pColumns, that) {
+        // 如果有使用模板则直接返回模板的内容
+        if (that.options.searchFormTemplate) {
+            return Template(that.options.searchFormTemplate, {columns: pColumns, table: that});
+        }
         var htmlForm = [];
-        var opList = ['=', '>', '>=', '<', '<=', '!=', 'FIND_IN_SET', 'LIKE', 'LIKE %...%', 'NOT LIKE', 'IN', 'NOT IN', 'IN(...)', 'NOT IN(...)', 'BETWEEN', 'NOT BETWEEN', 'RANGE', 'NOT RANGE', 'IS NULL', 'IS NOT NULL'];
-        htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" action="%s" >', that.options.actionForm));
+        htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" novalidate method="post" action="%s" >', that.options.actionForm));
         htmlForm.push('<fieldset>');
         if (that.options.titleForm.length > 0)
             htmlForm.push(sprintf("<legend>%s</legend>", that.options.titleForm));
@@ -114,24 +60,28 @@
             var vObjCol = pColumns[i];
             if (!vObjCol.checkbox && vObjCol.field !== 'operate' && vObjCol.searchable && vObjCol.operate !== false) {
                 var query = Backend.api.query(vObjCol.field);
-                query = query ? query : '';
-                vObjCol.defaultValue = that.options.renderDefault && query != '' ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue);
+                var operate = Backend.api.query(vObjCol.field + "-operate");
+
+                vObjCol.defaultValue = that.options.renderDefault && query ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue);
+                vObjCol.operate = that.options.renderDefault && operate ? operate : (typeof vObjCol.operate === 'undefined' ? '=' : vObjCol.operate);
                 ColumnsForSearch.push(vObjCol);
 
                 htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">');
                 htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title));
                 htmlForm.push('<div class="col-xs-8">');
 
-                vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate.toUpperCase(), opList) === -1) ? '=' : vObjCol.operate.toUpperCase();
-                htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="field-%s" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate));
+                vObjCol.operate = vObjCol.operate ? vObjCol.operate.toUpperCase() : '=';
+                htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="%s-operate" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate));
 
+                var addClass = typeof vObjCol.addClass === 'undefined' ? (typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass) : 'form-control ' + vObjCol.addClass;
+                var extend = typeof vObjCol.extend === 'undefined' ? '' : vObjCol.extend;
                 var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style);
+                extend = typeof vObjCol.data !== 'undefined' && extend == '' ? vObjCol.data : extend;
                 if (vObjCol.searchList) {
                     if (typeof vObjCol.searchList === 'object' && typeof vObjCol.searchList.then === 'function') {
-                        htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, sprintf('<option value="">%s</option>', that.options.formatCommonChoose())));
+                        htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, sprintf('<option value="">%s</option>', that.options.formatCommonChoose())));
                         (function (vObjCol, that) {
                             $.when(vObjCol.searchList).done(function (ret) {
-
                                 var isArray = false;
                                 if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) {
                                     var resultlist = {};
@@ -160,23 +110,21 @@
                             var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : '';
                             searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect));
                         });
-                        htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, searchList.join('')));
+                        htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, searchList.join('')));
                     }
                 } else {
                     var placeholder = typeof vObjCol.placeholder === 'undefined' ? vObjCol.title : vObjCol.placeholder;
                     var type = typeof vObjCol.type === 'undefined' ? 'text' : vObjCol.type;
-                    var addclass = typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass;
-                    var data = typeof vObjCol.data === 'undefined' ? '' : vObjCol.data;
                     var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue;
                     if (/BETWEEN$/.test(vObjCol.operate)) {
                         var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', ''];
                         var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder];
                         htmlForm.push('<div class="row row-between">');
-                        htmlForm.push(sprintf('<div class="col-xs-6 11"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, data));
-                        htmlForm.push(sprintf('<div class="col-xs-6 22"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, data));
+                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, extend));
+                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, extend));
                         htmlForm.push('</div>');
                     } else {
-                        htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addclass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, data));
+                        htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addClass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, extend));
                     }
                 }
 
@@ -191,7 +139,7 @@
         htmlForm.push('</fieldset>');
         htmlForm.push('</form>');
 
-        return htmlForm;
+        return htmlForm.join('');
     };
 
     var createFormBtn = function (that) {
@@ -199,7 +147,7 @@
         var searchSubmit = that.options.formatCommonSubmitButton();
         var searchReset = that.options.formatCommonResetButton();
         htmlBtn.push('<div class="col-sm-8 col-xs-offset-4">');
-        htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" >%s</button> ', searchSubmit));
+        htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" formnovalidate>%s</button> ', searchSubmit));
         htmlBtn.push(sprintf('<button type="reset" class="btn btn-default" >%s</button> ', searchReset));
         htmlBtn.push('</div>');
         return htmlBtn;
@@ -219,16 +167,17 @@
         var op = {};
         var filter = {};
         var value = '';
-        $("form.form-commonsearch input.operate", that.$commonsearch).each(function (i) {
+        $("form.form-commonsearch .operate", that.$commonsearch).each(function (i) {
             var name = $(this).data("name");
-            var sym = $(this).val().toUpperCase();
+            var sym = $(this).is("select") ? $("option:selected", this).val() : $(this).val().toUpperCase();
             var obj = $("[name='" + name + "']", that.$commonsearch);
             if (obj.size() == 0)
                 return true;
             var vObjCol = ColumnsForSearch[i];
             if (obj.size() > 1) {
                 if (/BETWEEN$/.test(sym)) {
-                    var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()), value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val());
+                    var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()),
+                        value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val());
                     if (value_begin.length || value_end.length) {
                         if (typeof vObjCol.process === 'function') {
                             value_begin = vObjCol.process(value_begin, 'begin');
@@ -244,11 +193,12 @@
                     }
                 } else {
                     value = $("[name='" + name + "']:checked", that.$commonsearch).val();
+                    value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val();
                 }
             } else {
-                value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : (sym == 'LIKE %...%' ? obj.val().replace(/\*/g, '%') : obj.val());
+                value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val();
             }
-            if (removeempty && value == '' && sym.indexOf("NULL") == -1) {
+            if (removeempty && (value == '' || value == null || ($.isArray(value) && value.length == 0)) && !sym.match(/null/i)) {
                 return true;
             }
 
@@ -267,7 +217,7 @@
         //移除empty的值
         if (removeempty) {
             $.each(params.filter, function (i, j) {
-                if (j === '') {
+                if ((j == '' || j == null || ($.isArray(j) && j.length == 0)) && !params.op[i].match(/null/i)) {
                     delete params.filter[i];
                     delete params.op[i];
                 }
@@ -282,8 +232,10 @@
         commonSearch: false,
         titleForm: "Common search",
         actionForm: "",
+        searchFormTemplate: "",
         searchFormVisible: true,
         searchClass: 'searchit',
+        showSearch: true,
         renderDefault: true,
         onCommonSearch: function (field, text) {
             return false;
@@ -322,10 +274,10 @@
     $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
 
     var BootstrapTable = $.fn.bootstrapTable.Constructor,
-            _initHeader = BootstrapTable.prototype.initHeader,
-            _initToolbar = BootstrapTable.prototype.initToolbar,
-            _load = BootstrapTable.prototype.load,
-            _initSearch = BootstrapTable.prototype.initSearch;
+        _initHeader = BootstrapTable.prototype.initHeader,
+        _initToolbar = BootstrapTable.prototype.initToolbar,
+        _load = BootstrapTable.prototype.load,
+        _initSearch = BootstrapTable.prototype.initSearch;
 
     BootstrapTable.prototype.initHeader = function () {
         _initHeader.apply(this, Array.prototype.slice.apply(arguments));
@@ -344,12 +296,13 @@
         }
 
         var that = this,
-                html = [];
-        html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign));
-        html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch()));
-        html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon))
-        html.push('</button></div>');
-
+            html = [];
+        if(that.options.showSearch){
+            html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign));
+            html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch()));
+            html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon))
+            html.push('</button></div>');
+        }
         if (that.$toolbar.find(".pull-right").size() > 0) {
             $(html.join('')).insertBefore(that.$toolbar.find(".pull-right:first"));
         } else {
@@ -359,7 +312,7 @@
         initCommonSearch(that.columns, that);
 
         that.$toolbar.find('button[name="commonSearch"]')
-                .off('click').on('click', function () {
+            .off('click').on('click', function () {
             that.$commonsearch.toggleClass("hidden");
             return;
         });
@@ -374,7 +327,7 @@
         var queryParams = that.options.queryParams;
         //匹配默认搜索值
         this.options.queryParams = function (params) {
-            return queryParams(getQueryParams(params, getSearchQuery(this, true)));
+            return queryParams(getQueryParams(params, getSearchQuery(that, true)));
         };
         this.trigger('post-common-search', that);
 
@@ -409,8 +362,8 @@
                 var fval = fp[key].toLowerCase();
                 var value = item[key];
                 value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header,
-                        that.header.formatters[$.inArray(key, that.header.fields)],
-                        [value, item, i], value);
+                    that.header.formatters[$.inArray(key, that.header.fields)],
+                    [value, item, i], value);
 
                 if (!($.inArray(key, that.header.fields) !== -1 &&
                         (typeof value === 'string' || typeof value === 'number') &&
diff --git a/public/assets/js/frontend.js b/public/assets/js/frontend.js
index 83ab566..84b2803 100644
--- a/public/assets/js/frontend.js
+++ b/public/assets/js/frontend.js
@@ -1,4 +1,4 @@
-define(['fast'], function (Fast) {
+define(['fast', 'template'], function (Fast, Template) {
     var Frontend = {
         api: Fast.api,
         init: function () {
@@ -53,6 +53,8 @@ define(['fast'], function (Fast) {
         }
     };
     Frontend.api = $.extend(Fast.api, Frontend.api);
+    //将Template渲染至全局,以便于在子框架中调用
+    window.Template = Template;
     //将Frontend渲染至全局,以便于在子框架中调用
     window.Frontend = Frontend;
 
diff --git a/public/assets/js/require-backend.min.js b/public/assets/js/require-backend.min.js
index 8896312..6ec1eb3 100644
--- a/public/assets/js/require-backend.min.js
+++ b/public/assets/js/require-backend.min.js
@@ -973,6 +973,8 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u
     return Fast;
 });
 
+/*!art-template - Template Engine | http://aui.github.com/artTemplate/*/
+!function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"&#60;",">":"&#62;",'"':"&#34;","'":"&#39;","&":"&#38;"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}();
 //! moment.js
 //! version : 2.15.2
 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
@@ -5209,7 +5211,7 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u
 }));
 define('moment', ['moment/moment'], function (main) { return main; });
 
-define('backend',['fast', 'moment'], function (Fast, Moment) {
+define('backend',['fast', 'template', 'moment'], function (Fast, Template, Moment) {
     var Backend = {
         api: {
             sidebar: function (params) {
@@ -5219,13 +5221,11 @@ define('backend',['fast', 'moment'], function (Fast, Moment) {
                 $.each(params, function (k, v) {
                     $url = Fast.api.fixurl(k);
 
-                    if ($.isArray(v))
-                    {
+                    if ($.isArray(v)) {
                         $nums = typeof v[0] !== 'undefined' ? v[0] : 0;
                         $color = typeof v[1] !== 'undefined' ? v[1] : colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums];
                         $class = typeof v[2] !== 'undefined' ? v[2] : 'label';
-                    } else
-                    {
+                    } else {
                         $nums = v;
                         $color = colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums];
                         $class = 'label';
@@ -5269,7 +5269,10 @@ define('backend',['fast', 'moment'], function (Fast, Moment) {
                             var id = Math.floor(new Date().valueOf() * Math.random());
                             icon = typeof icon !== 'undefined' ? icon : 'fa fa-circle-o';
                             title = typeof title !== 'undefined' ? title : '';
-                            top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({url: url, addtabs: id}).addClass("hide").appendTo(top.window.document.body).trigger("click");
+                            top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({
+                                url: url,
+                                addtabs: id
+                            }).addClass("hide").appendTo(top.window.document.body).trigger("click");
                         }
                     }
                 }
@@ -5438,6 +5441,8 @@ define('backend',['fast', 'moment'], function (Fast, Moment) {
         }
     };
     Backend.api = $.extend(Fast.api, Backend.api);
+    //将Template渲染至全局,以便于在子框架中调用
+    window.Template = Template;
     //将Moment渲染至全局,以便于在子框架中调用
     window.Moment = Moment;
     //将Backend渲染至全局,以便于在子框架中调用
@@ -5744,5842 +5749,4146 @@ define("bootstrap-table-export", ["bootstrap-table","tableexport"], (function (g
     };
 }(this)));
 
-!function(a){"use strict";if("function"==typeof define&&define.amd)define('bootstrap-datetimepicker',["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t",delete:46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return i.indexOf("Y")!==-1;case"M":return i.indexOf("M")!==-1;case"d":return i.toLowerCase().indexOf("d")!==-1;case"h":case"H":return i.toLowerCase().indexOf("h")!==-1;case"m":return i.indexOf("m")!==-1;case"s":return i.indexOf("s")!==-1;default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&d.daysOfWeekDisabled.indexOf(b.day())!==-1)return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){if(b.isBetween(this[0],this[1]))return e=!0,!1}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;g<42;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),0!==b.day()&&6!==b.day()||k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return!c||!c.transitioning||(b=!0,!1)}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return!a(b.currentTarget).is(".disabled")&&(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),!!Object.keys(c).length&&c},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),!!Object.keys(c).length&&c},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||b<0||isNaN(b)?a:(a.indexOf(b)===-1&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"!==a&&"moment"!==a||(a=y()));var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"!==a&&"moment"!==a||(a=y()));var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||a<1)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&b.indexOf(a.toLowerCase())===-1)throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(r.indexOf(a)===-1)throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(u.indexOf(a)===-1)throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),t.indexOf(b.horizontal)===-1)throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),s.indexOf(b.vertical)===-1)throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
-return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.datetimepicker=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.datetimepicker.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.datetimepicker.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},delete:function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.datetimepicker});
 /**
-* @version: 2.1.27
-* @author: Dan Grossman http://www.dangrossman.info/
-* @copyright: Copyright (c) 2012-2017 Dan Grossman. All rights reserved.
-* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
-* @website: http://www.daterangepicker.com/
-*/
-// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js
-(function (root, factory) {
-    if (typeof define === 'function' && define.amd) {
-        // AMD. Make globaly available as well
-        define('bootstrap-daterangepicker',['moment', 'jquery'], function (moment, jquery) {
-            if (!jquery.fn) jquery.fn = {}; // webpack server rendering
-            return factory(moment, jquery);
-        });
-    } else if (typeof module === 'object' && module.exports) {
-        // Node / Browserify
-        //isomorphic issue
-        var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;
-        if (!jQuery) {
-            jQuery = require('jquery');
-            if (!jQuery.fn) jQuery.fn = {};
-        }
-        var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment');
-        module.exports = factory(moment, jQuery);
-    } else {
-        // Browser globals
-        root.daterangepicker = factory(root.moment, root.jQuery);
-    }
-}(this, function(moment, $) {
-    var DateRangePicker = function(element, options, cb) {
-
-        //default settings for options
-        this.parentEl = 'body';
-        this.element = $(element);
-        this.startDate = moment().startOf('day');
-        this.endDate = moment().endOf('day');
-        this.minDate = false;
-        this.maxDate = false;
-        this.dateLimit = false;
-        this.autoApply = false;
-        this.singleDatePicker = false;
-        this.showDropdowns = false;
-        this.showWeekNumbers = false;
-        this.showISOWeekNumbers = false;
-        this.showCustomRangeLabel = true;
-        this.timePicker = false;
-        this.timePicker24Hour = false;
-        this.timePickerIncrement = 1;
-        this.timePickerSeconds = false;
-        this.linkedCalendars = true;
-        this.autoUpdateInput = true;
-        this.alwaysShowCalendars = false;
-        this.ranges = {};
-
-        this.opens = 'right';
-        if (this.element.hasClass('pull-right'))
-            this.opens = 'left';
-
-        this.drops = 'down';
-        if (this.element.hasClass('dropup'))
-            this.drops = 'up';
-
-        this.buttonClasses = 'btn btn-sm';
-        this.applyClass = 'btn-success';
-        this.cancelClass = 'btn-default';
-
-        this.locale = {
-            direction: 'ltr',
-            format: moment.localeData().longDateFormat('L'),
-            separator: ' - ',
-            applyLabel: 'Apply',
-            cancelLabel: 'Cancel',
-            weekLabel: 'W',
-            customRangeLabel: 'Custom Range',
-            daysOfWeek: moment.weekdaysMin(),
-            monthNames: moment.monthsShort(),
-            firstDay: moment.localeData().firstDayOfWeek()
-        };
-
-        this.callback = function() { };
-
-        //some state information
-        this.isShowing = false;
-        this.leftCalendar = {};
-        this.rightCalendar = {};
-
-        //custom options from user
-        if (typeof options !== 'object' || options === null)
-            options = {};
-
-        //allow setting options with data attributes
-        //data-api options will be overwritten with custom javascript options
-        options = $.extend(this.element.data(), options);
-
-        //html template for the picker UI
-        if (typeof options.template !== 'string' && !(options.template instanceof $))
-            options.template = '<div class="daterangepicker dropdown-menu">' +
-                '<div class="calendar left">' +
-                    '<div class="daterangepicker_input">' +
-                      '<input class="input-mini form-control" type="text" name="daterangepicker_start" value="" />' +
-                      '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
-                      '<div class="calendar-time">' +
-                        '<div></div>' +
-                        '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
-                      '</div>' +
-                    '</div>' +
-                    '<div class="calendar-table"></div>' +
-                '</div>' +
-                '<div class="calendar right">' +
-                    '<div class="daterangepicker_input">' +
-                      '<input class="input-mini form-control" type="text" name="daterangepicker_end" value="" />' +
-                      '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
-                      '<div class="calendar-time">' +
-                        '<div></div>' +
-                        '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
-                      '</div>' +
-                    '</div>' +
-                    '<div class="calendar-table"></div>' +
-                '</div>' +
-                '<div class="ranges">' +
-                    '<div class="range_inputs">' +
-                        '<button class="applyBtn" disabled="disabled" type="button"></button> ' +
-                        '<button class="cancelBtn" type="button"></button>' +
-                    '</div>' +
-                '</div>' +
-            '</div>';
-
-        this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);
-        this.container = $(options.template).appendTo(this.parentEl);
-
-        //
-        // handle all the possible options overriding defaults
-        //
-
-        if (typeof options.locale === 'object') {
-
-            if (typeof options.locale.direction === 'string')
-                this.locale.direction = options.locale.direction;
-
-            if (typeof options.locale.format === 'string')
-                this.locale.format = options.locale.format;
-
-            if (typeof options.locale.separator === 'string')
-                this.locale.separator = options.locale.separator;
-
-            if (typeof options.locale.daysOfWeek === 'object')
-                this.locale.daysOfWeek = options.locale.daysOfWeek.slice();
-
-            if (typeof options.locale.monthNames === 'object')
-              this.locale.monthNames = options.locale.monthNames.slice();
-
-            if (typeof options.locale.firstDay === 'number')
-              this.locale.firstDay = options.locale.firstDay;
-
-            if (typeof options.locale.applyLabel === 'string')
-              this.locale.applyLabel = options.locale.applyLabel;
-
-            if (typeof options.locale.cancelLabel === 'string')
-              this.locale.cancelLabel = options.locale.cancelLabel;
-
-            if (typeof options.locale.weekLabel === 'string')
-              this.locale.weekLabel = options.locale.weekLabel;
-
-            if (typeof options.locale.customRangeLabel === 'string'){
-                //Support unicode chars in the custom range name.
-                var elem = document.createElement('textarea');
-                elem.innerHTML = options.locale.customRangeLabel;
-                var rangeHtml = elem.value;
-                this.locale.customRangeLabel = rangeHtml;
-            }
-        }
-        this.container.addClass(this.locale.direction);
-
-        if (typeof options.startDate === 'string')
-            this.startDate = moment(options.startDate, this.locale.format);
-
-        if (typeof options.endDate === 'string')
-            this.endDate = moment(options.endDate, this.locale.format);
-
-        if (typeof options.minDate === 'string')
-            this.minDate = moment(options.minDate, this.locale.format);
-
-        if (typeof options.maxDate === 'string')
-            this.maxDate = moment(options.maxDate, this.locale.format);
-
-        if (typeof options.startDate === 'object')
-            this.startDate = moment(options.startDate);
-
-        if (typeof options.endDate === 'object')
-            this.endDate = moment(options.endDate);
-
-        if (typeof options.minDate === 'object')
-            this.minDate = moment(options.minDate);
-
-        if (typeof options.maxDate === 'object')
-            this.maxDate = moment(options.maxDate);
-
-        // sanity check for bad options
-        if (this.minDate && this.startDate.isBefore(this.minDate))
-            this.startDate = this.minDate.clone();
-
-        // sanity check for bad options
-        if (this.maxDate && this.endDate.isAfter(this.maxDate))
-            this.endDate = this.maxDate.clone();
-
-        if (typeof options.applyClass === 'string')
-            this.applyClass = options.applyClass;
-
-        if (typeof options.cancelClass === 'string')
-            this.cancelClass = options.cancelClass;
-
-        if (typeof options.dateLimit === 'object')
-            this.dateLimit = options.dateLimit;
-
-        if (typeof options.opens === 'string')
-            this.opens = options.opens;
-
-        if (typeof options.drops === 'string')
-            this.drops = options.drops;
-
-        if (typeof options.showWeekNumbers === 'boolean')
-            this.showWeekNumbers = options.showWeekNumbers;
-
-        if (typeof options.showISOWeekNumbers === 'boolean')
-            this.showISOWeekNumbers = options.showISOWeekNumbers;
-
-        if (typeof options.buttonClasses === 'string')
-            this.buttonClasses = options.buttonClasses;
-
-        if (typeof options.buttonClasses === 'object')
-            this.buttonClasses = options.buttonClasses.join(' ');
-
-        if (typeof options.showDropdowns === 'boolean')
-            this.showDropdowns = options.showDropdowns;
-
-        if (typeof options.showCustomRangeLabel === 'boolean')
-            this.showCustomRangeLabel = options.showCustomRangeLabel;
-
-        if (typeof options.singleDatePicker === 'boolean') {
-            this.singleDatePicker = options.singleDatePicker;
-            if (this.singleDatePicker)
-                this.endDate = this.startDate.clone();
-        }
-
-        if (typeof options.timePicker === 'boolean')
-            this.timePicker = options.timePicker;
-
-        if (typeof options.timePickerSeconds === 'boolean')
-            this.timePickerSeconds = options.timePickerSeconds;
-
-        if (typeof options.timePickerIncrement === 'number')
-            this.timePickerIncrement = options.timePickerIncrement;
-
-        if (typeof options.timePicker24Hour === 'boolean')
-            this.timePicker24Hour = options.timePicker24Hour;
-
-        if (typeof options.autoApply === 'boolean')
-            this.autoApply = options.autoApply;
-
-        if (typeof options.autoUpdateInput === 'boolean')
-            this.autoUpdateInput = options.autoUpdateInput;
-
-        if (typeof options.linkedCalendars === 'boolean')
-            this.linkedCalendars = options.linkedCalendars;
-
-        if (typeof options.isInvalidDate === 'function')
-            this.isInvalidDate = options.isInvalidDate;
-
-        if (typeof options.isCustomDate === 'function')
-            this.isCustomDate = options.isCustomDate;
+ * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill
+ * v1.5.2
+ *
+ * Copyright 2013, Moxiecode Systems AB
+ * Released under GPL License.
+ *
+ * License: http://www.plupload.com/license
+ * Contributing: http://www.plupload.com/contributing
+ *
+ * Date: 2016-11-23
+ */
+!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r<e.length;++r){if(i=s[e[r]]||o(e[r]),!i)throw"module definition dependecy not found: "+e[r];n.push(i)}t.apply(null,n)}function n(e,n,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(n===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";i(n,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function o(t){for(var i=e,n=t.split(/[.\/]/),r=0;r<n.length;++r){if(!i[n[r]])return;i=i[n[r]]}return i}function a(i){for(var n=0;n<i.length;n++){for(var r=e,o=i[n],a=o.split(/[.\/]/),u=0;u<a.length-1;++u)r[a[u]]===t&&(r[a[u]]={}),r=r[a[u]];r[a[a.length-1]]=s[o]}}var s={};n("moxie/core/utils/Basic",[],function(){function e(e){var t;return e===t?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}function t(){return a(!1,!1,arguments)}function i(){return a(!0,!1,arguments)}function n(){return a(!1,!0,arguments)}function r(){return a(!0,!0,arguments)}function o(i){switch(e(i)){case"array":return Array.prototype.slice.call(i);case"object":return t({},i)}return i}function a(t,i,n){var r,s=n[0];return u(n,function(n,c){c>0&&u(n,function(n,u){var c=-1!==m(e(n),["array","object"]);return n===r||t&&s[u]===r?!0:(c&&i&&(n=o(n)),e(s[u])===e(n)&&c?a(t,i,[s[u],n]):s[u]=n,void 0)})}),s}function s(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function u(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function c(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function l(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++r<o&&!e?n(r):i(e)})}var r=0,o=t.length;"function"!==e(i)&&(i=function(){}),t&&t.length||i(),n(r)}function d(e,t){var i=0,n=e.length,r=new Array(n);u(e,function(e,o){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),r[o]=a,i++,i===n&&(r.unshift(null),t.apply(this,r))})})}function m(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var i=0,n=t.length;n>i;i++)if(t[i]===e)return i}return-1}function h(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===m(t[r],i)&&n.push(t[r]);return n.length?n:!1}function f(e,t){var i=[];return u(e,function(e){-1!==m(e,t)&&i.push(e)}),i.length?i:null}function p(e){var t,i=[];for(t=0;t<e.length;t++)i[t]=e[t];return i}function g(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e}function x(e){if("string"!=typeof e)return e;var t,i={t:1099511627776,g:1073741824,m:1048576,k:1024};return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),t=e[2],e=+e[1],i.hasOwnProperty(t)&&(e*=i[t]),Math.floor(e)}function v(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e(t)?t:""})}function y(e,t){var i=this;setTimeout(function(){e.call(i)},t||1)}var w=function(){var e=0;return function(t){var i,n=(new Date).getTime().toString(32);for(i=0;5>i;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:w,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:s,each:u,isEmptyObj:c,inSeries:l,inParallel:d,inArray:m,arrayDiff:h,arrayIntersect:f,toArray:p,trim:g,sprintf:v,parseSizeStr:x,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m<e.length);return f=p.join(""),i?t(f):f},n=function(t,i){if(i&&(t=e(t)),"function"==typeof window.btoa)return window.btoa(t);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!t)return t;do n=t.charCodeAt(m++),r=t.charCodeAt(m++),o=t.charCodeAt(m++),l=n<<16|r<<8|o,a=63&l>>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(m<t.length);f=p.join("");var g=t.length%3;return(g?f.slice(0,g-3):f)+"===".slice(g||3)};return{utf8_encode:e,utf8_decode:t,atob:i,btoa:n}}),n("moxie/core/utils/Env",["moxie/core/utils/Basic"],function(e){function t(e,t,i){var n=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),n=0;r>n;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]<t[n]){o=-1;break}if(e[n]>t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d<m.length;d+=2){var h=m[d],f=m[d+1];if(typeof t===r){t={};for(s in f)u=f[s],typeof u===o?t[u[0]]=e:t[u]=e}for(i=a=0;i<h.length;i++)if(c=h[i].exec(this.getUA())){for(s=0;s<f.length;s++)l=c[++a],u=f[s],typeof u===o&&u.length>0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a<n[r].length;a++)if(u.has(n[r][a],t))return r===i?e:r}else if(u.has(n[r],t))return r===i?e:r;return t}},l={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},d={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[a,s],[/\s(opr)\/([\w\.]+)/i],[[a,"Opera"],s],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],[a,s],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[a,"IE"],s],[/(edge)\/((\d+)?[\w\.]+)/i],[a,s],[/(yabrowser)\/([\w\.]+)/i],[[a,"Yandex"],s],[/(comodo_dragon)\/([\w\.]+)/i],[[a,/_/g," "],s],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],[a,s],[/(dolfin)\/([\w\.]+)/i],[[a,"Dolphin"],s],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[a,"Chrome"],s],[/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],[s,[a,"MIUI Browser"]],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],[s,[a,"Android Browser"]],[/FBAV\/([\w\.]+);/i],[s,[a,"Facebook"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[s,[a,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[s,a],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[a,[s,c.str,l.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[a,s],[/(navigator|netscape)\/([\w\.-]+)/i],[[a,"Netscape"],s],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[a,s]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[s,[a,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[a,s],[/rv\:([\w\.]+).*(gecko)/i],[s,a]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[a,s],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[a,[s,c.str,l.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[a,"Windows"],[s,c.str,l.os.windows.version]],[/\((bb)(10);/i],[[a,"BlackBerry"],s],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[a,s],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[a,"Symbian"],s],[/\((series40);/i],[a],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[a,"Firefox OS"],s],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[a,s],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[a,"Chromium OS"],s],[/(sunos)\s?([\w\.]+\d)*/i],[[a,"Solaris"],s],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[a,s],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[a,"iOS"],[s,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[a,"Mac OS"],[s,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[a,s]]},m=function(e){var i=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:t);this.getBrowser=function(){return c.rgx.apply(this,d.browser)},this.getEngine=function(){return c.rgx.apply(this,d.engine)},this.getOS=function(){return c.rgx.apply(this,d.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return i},this.setUA=function(e){return i=e,this},this.setUA(i)};return m}(),n=function(){var t={define_property:function(){return!1}(),create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var i=new XMLHttpRequest;if(i.open("get","/"),"responseType"in i)return i.responseType=t,i.responseType!==t?!1:!0}}catch(n){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==o.browser||o.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;t<r.length;t+=2){for(n=r[t+1].split(/ /),i=0;i<n.length;i++)this.mimes[n[i]]=r[t];this.extensions[r[t]]=n}},extList2mimes:function(t,i){var n,r,o,a,s=this,u=[];for(r=0;r<t.length;r++)for(n=t[r].extensions.split(/\s*,\s*/),o=0;o<n.length;o++){if("*"===n[o])return[];if(a=s.mimes[n[o]],a&&-1===e.inArray(a,u)&&u.push(a),i&&/^\w+$/.test(n[o]))u.push("."+n[o]);else if(!a)return[]}return u},mimes2exts:function(t){var i=this,n=[];return e.each(t,function(t){if("*"===t)return n=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(i.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(n,i.extensions[t])}):i.extensions[t]&&[].push.apply(n,i.extensions[t]))}),n},mimes2extList:function(i){var n=[],r=[];return"string"===e.typeOf(i)&&(i=e.trim(i).split(/\s*,\s*/)),r=this.mimes2exts(i),n.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),n.mimes=i,n},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return n.addMimeType(i),n}),n("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o,a,s,u){function c(t){var o,c,d;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),c=n.get(t.browse_button),!c)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);d={accept:[{title:a.translate("All Files"),extensions:"*"}],multiple:!1,required_caps:!1,container:c.parentNode||document.body},t=e.extend({},d,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=i.mimes2extList(t.accept)),o=n.get(t.container),o||(o=document.body),"static"===n.getStyle(o,"position")&&(o.style.position="relative"),o=c=null,u.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){var i=this;i.bind("RuntimeInit",function(r,o){i.ruid=o.uid,i.shimid=o.shimid,i.bind("Ready",function(){i.trigger("Refresh")},999),i.bind("Refresh",function(){var i,r,a,s,u;a=n.get(t.browse_button),s=n.get(o.shimid),a&&(i=n.getPos(a,n.get(t.container)),r=n.getSize(a),u=parseInt(n.getStyle(a,"z-index"),10)||0,s&&e.extend(s.style,{top:i.y+"px",left:i.x+"px",width:r.w+"px",height:r.h+"px",zIndex:u+1})),s=a=null}),o.exec.call(i,"FileInput","init",t)}),i.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},getOption:function(e){return t[e]},setOption:function(e,n){if(t.hasOwnProperty(e)){var o=t[e];switch(e){case"accept":"string"==typeof n&&(n=i.mimes2extList(n));break;case"container":case"required_caps":throw new r.FileException(r.FileException.NO_MODIFICATION_ALLOWED_ERR)}t[e]=n,this.exec("FileInput","setOption",e,n),this.trigger("OptionChanged",e,n,o)}},disable:function(t){var i=this.getRuntime();i&&this.exec("FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){this.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),n("moxie/file/File",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/file/Blob"],function(e,t,i){function n(n,r){r||(r={}),i.apply(this,arguments),this.type||(this.type=t.getFileMime(r.name));var o;if(r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else if(this.type){var a=this.type.split("/")[0];o=e.guid((""!==a?a:"file")+"_"),t.extensions[this.type]&&(o+="."+t.extensions[this.type][0])}e.extend(this,{name:o||e.guid("file_"),relativePath:"",lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return n.prototype=i.prototype,n}),n("moxie/file/FileDrop",["moxie/core/I18n","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/core/utils/Env","moxie/file/File","moxie/runtime/RuntimeClient","moxie/core/EventTarget","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u){function c(i){var r,o=this;"string"==typeof i&&(i={drop_zone:i}),r={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},i="object"==typeof i?n.extend({},r,i):r,i.container=t.get(i.drop_zone)||document.body,"static"===t.getStyle(i.container,"position")&&(i.container.style.position="relative"),"string"==typeof i.accept&&(i.accept=u.mimes2extList(i.accept)),a.call(o),n.extend(o,{uid:n.guid("uid_"),ruid:null,files:null,init:function(){o.bind("RuntimeInit",function(e,t){o.ruid=t.uid,t.exec.call(o,"FileDrop","init",i),o.dispatchEvent("ready")}),o.connectRuntime(i)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","dragenter","dragleave","drop","error"];return c.prototype=s.instance,c}),n("moxie/file/FileReader",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/Exceptions","moxie/core/EventTarget","moxie/file/Blob","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o){function a(){function n(e,n){if(this.trigger("loadstart"),this.readyState===a.LOADING)return this.trigger("error",new i.DOMException(i.DOMException.INVALID_STATE_ERR)),this.trigger("loadend"),void 0;
+if(!(n instanceof r))return this.trigger("error",new i.DOMException(i.DOMException.NOT_FOUND_ERR)),this.trigger("loadend"),void 0;if(this.result=null,this.readyState=a.LOADING,n.isDetached()){var o=n.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=o;break;case"readAsDataURL":this.result="data:"+n.type+";base64,"+t.btoa(o)}this.readyState=a.DONE,this.trigger("load"),this.trigger("loadend")}else this.connectRuntime(n.ruid),this.exec("FileReader","read",e,n)}o.call(this),e.extend(this,{uid:e.guid("uid_"),readyState:a.EMPTY,result:null,error:null,readAsBinaryString:function(e){n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){n.call(this,"readAsDataURL",e)},readAsText:function(e){n.call(this,"readAsText",e)},abort:function(){this.result=null,-1===e.inArray(this.readyState,[a.EMPTY,a.DONE])&&(this.readyState===a.LOADING&&(this.readyState=a.DONE),this.exec("FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),this.exec("FileReader","destroy"),this.disconnectRuntime(),this.unbindAll()}}),this.handleEventProps(s),this.bind("Error",function(e,t){this.readyState=a.DONE,this.error=t},999),this.bind("Load",function(){this.readyState=a.DONE},999)}var s=["loadstart","progress","load","abort","error","loadend"];return a.EMPTY=0,a.LOADING=1,a.DONE=2,a.prototype=n.instance,a}),n("moxie/core/utils/Url",[],function(){var e=function(t,i){for(var n=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],r=n.length,o={http:80,https:443},a={},s=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,u=s.exec(t||"");r--;)u[r]&&(a[n[r]]=u[r]);if(!a.scheme){i&&"string"!=typeof i||(i=e(i||document.location.href)),a.scheme=i.scheme,a.host=i.host,a.port=i.port;var c="";/^[^\/]/.test(a.path)&&(c=i.path,c=/\/[^\/]*\.[^\/]*$/.test(c)?c.replace(/\/[^\/]+$/,"/"):c.replace(/\/?$/,"/")),a.path=c+(a.path||"")}return a.port||(a.port=o[a.scheme]||80),a.port=parseInt(a.port,10),a.path||(a.path="/"),delete a.source,a},t=function(t){var i={http:80,https:443},n="object"==typeof t?t:e(t);return n.scheme+"://"+n.host+(n.port!==i[n.scheme]?":"+n.port:"")+n.path+(n.query?n.query:"")},i=function(t){function i(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof t&&(t=e(t)),i(e())===i(t)};return{parseUrl:e,resolveUrl:t,hasSameOrigin:i}}),n("moxie/runtime/RuntimeTarget",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i){function n(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return n.prototype=i.instance,n}),n("moxie/file/FileReaderSync",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/utils/Encode"],function(e,t,i){return function(){function n(e,t){if(!t.isDetached()){var n=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),n}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+i.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;s>a;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:y,password:w,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,y,w,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=u||l.user,w=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='<img src="'+d+'" width="'+o.width+'" height="'+o.height+'" />',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){d.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='<input id="'+g.uid+'" type="file" style="font-size:999px;opacity:0;"'+(e.multiple&&g.can("select_multiple")?"multiple":"")+(e.directory&&g.can("select_folder")?"webkitdirectory directory":"")+(d?' accept="'+d.join(",")+'"':"")+" />",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n<e.length;n++)[].push.apply(t,e[n].extensions.split(/\s*,\s*/));return-1===i.inArray("*",t)?t:[]}function u(e){if(!g.length)return!0;var t=o.getFileExtension(e.name);return!t||-1!==i.inArray(t,g)}function c(e,t){var n=[];i.each(e,function(e){var t=e.webkitGetAsEntry();t&&(t.isFile?a(e.getAsFile(),t.fullPath):n.push(t))}),n.length?l(n,t):t()}function l(e,t){var n=[];i.each(e,function(e){n.push(function(t){d(e,t)})}),i.inSeries(n,function(){t()})}function d(e,t){e.isFile?e.file(function(i){a(i,e.fullPath),t()},function(){t()}):e.isDirectory?m(e,t):t()}function m(e,t){function i(e){r.readEntries(function(t){t.length?([].push.apply(n,t),i(e)):e()},e)}var n=[],r=e.createReader();i(function(){l(n,t)})}var h,f,p=[],g=[];i.extend(this,{init:function(t){var n,o=this;h=t,f=o.ruid,g=s(h.accept),n=h.container,r.addEvent(n,"dragover",function(t){e(t)&&(t.preventDefault(),t.dataTransfer.dropEffect="copy")},o.uid),r.addEvent(n,"drop",function(t){e(t)&&(t.preventDefault(),p=[],t.dataTransfer.items&&t.dataTransfer.items[0].webkitGetAsEntry?c(t.dataTransfer.items,function(){o.files=p,o.trigger("drop")}):(i.each(t.dataTransfer.files,function(e){a(e)}),o.files=p,o.trigger("drop")))},o.uid),r.addEvent(n,"dragenter",function(){o.trigger("dragenter")},o.uid),r.addEvent(n,"dragleave",function(){o.trigger("dragleave")},o.uid)},destroy:function(){r.removeAllEvents(h&&n.get(h.container),this.uid),f=p=g=h=null}})}return e.FileDrop=a}),n("moxie/runtime/html5/file/FileReader",["moxie/runtime/html5/Runtime","moxie/core/utils/Encode","moxie/core/utils/Basic"],function(e,t,i){function n(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var n,r=!1;i.extend(this,{read:function(t,o){var a=this;a.result="",n=new window.FileReader,n.addEventListener("progress",function(e){a.trigger(e)}),n.addEventListener("load",function(t){a.result=r?e(n.result):n.result,a.trigger(t)}),n.addEventListener("error",function(e){a.trigger(e,n.error)}),n.addEventListener("loadend",function(e){n=null,a.trigger(e)}),"function"===i.typeOf(n[t])?(r=!1,n[t](o.getSource())):"readAsBinaryString"===t&&(r=!0,n.readAsDataURL(o.getSource()))},abort:function(){n&&n.abort()},destroy:function(){n=null}})}return e.FileReader=n}),n("moxie/runtime/html5/xhr/XMLHttpRequest",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Url","moxie/file/File","moxie/file/Blob","moxie/xhr/FormData","moxie/core/Exceptions","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(e,t){var i,n,r=this;i=t.getBlob().getSource(),n=new window.FileReader,n.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:n.result})),f.send.call(r,e,t)},n.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(i){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,i=e.responseText;return"IE"===u.browser&&i&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(i)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),i="--",n="\r\n",r="",a=this.getRuntime();if(!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return m.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,a){r+=e instanceof o?i+t+n+'Content-Disposition: form-data; name="'+a+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+n+"Content-Type: "+(e.type||"application/octet-stream")+n+n+e.getSource()+n:i+t+n+'Content-Disposition: form-data; name="'+a+'"'+n+n+unescape(encodeURIComponent(e))+n}),r+=i+t+i+n}var m,h,f=this;t.extend(this,{send:function(i,r){var s=this,l="Mozilla"===u.browser&&u.verComp(u.version,4,">=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource();
+else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);m.send(e.buffer)}():m.send(r),s.trigger("loadstart")},getStatus:function(){try{if(m)return m.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var n=new r(t.uid,m.response),o=m.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(h=a[2])}return n.name=h,n.type||(n.type=i.getFileMime(h)),n;case"json":return u.can("return_response_type","json")?m.response:200===m.status&&window.JSON?JSON.parse(m.responseText):null;case"document":return l(m);default:return""!==m.responseText?m.responseText:null}}catch(s){return null}},getAllResponseHeaders:function(){try{return m.getAllResponseHeaders()}catch(e){}return""},abort:function(){m&&m.abort()},destroy:function(){f=h=null}})}return e.XMLHttpRequest=c}),n("moxie/runtime/html5/utils/BinaryReader",["moxie/core/utils/Basic"],function(e){function t(e){e instanceof ArrayBuffer?i.apply(this,arguments):n.apply(this,arguments)}function i(t){var i=new DataView(t);e.extend(this,{readByteAt:function(e){return i.getUint8(e)},writeByteAt:function(e,t){i.setUint8(e,t)},SEGMENT:function(e,n,r){switch(arguments.length){case 2:return t.slice(e,e+n);case 1:return t.slice(e);case 3:if(null===r&&(r=new ArrayBuffer),r instanceof ArrayBuffer){var o=new Uint8Array(this.length()-n+r.byteLength);e>0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<<Math.abs(n+8*r);return i},write:function(e,t,i){var n,r;if(e>this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=y[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n<t.ExifVersion.length;n++)r+=String.fromCharCode(t.ExifVersion[n]);t.ExifVersion=r}}return t},GPS:function(){var t=null;if(d.gpsIFD){try{t=a.call(this,d.gpsIFD,c.gps)}catch(i){return null}t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join("."))}return t},thumb:function(){if(d.IFD1)try{var e=a.call(this,d.IFD1,c.thumb);if("JPEGInterchangeFormat"in e)return this.SEGMENT(d.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(t){}return null},setExif:function(e,t){return"PixelXDimension"!==e&&"PixelYDimension"!==e?!1:s.call(this,"exif",e,t)},clear:function(){u.clear(),o=c=l=h=d=u=null}}),65505!==this.SHORT(0)||"EXIF\0"!==this.STRING(4,5).toUpperCase())throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(this.littleEndian=18761==this.SHORT(m),42!==this.SHORT(m+=2))throw new n.ImageError(n.ImageError.INVALID_META_ERR);d.IFD0=d.tiffHeader+this.LONG(m+=2),h=a.call(this,d.IFD0,c.tiff),"ExifIFDPointer"in h&&(d.exifIFD=d.tiffHeader+h.ExifIFDPointer,delete h.ExifIFDPointer),"GPSInfoIFDPointer"in h&&(d.gpsIFD=d.tiffHeader+h.GPSInfoIFDPointer,delete h.GPSInfoIFDPointer),e.isEmptyObj(h)&&(h=null);var f=this.LONG(d.IFD0+12*this.SHORT(d.IFD0)+2);f&&(d.IFD1=d.tiffHeader+f)}return r.prototype=i.prototype,r}),n("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],function(e,t,i,n,r){function o(o){function a(e){var t,i,n=0;for(e||(e=c);n<=e.length();){if(t=e.SHORT(n+=2),t>=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;i<n.length;i++,t+=2)if(n[i]!=s.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),l=r.call(this),t.extend(this,{type:"image/png",size:s.length(),width:l.width,height:l.height,purge:function(){o.call(this)}}),o.call(this)}return n}),n("moxie/runtime/html5/image/ImageInfo",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEG","moxie/runtime/html5/image/PNG"],function(e,t,i,n){return function(r){var o,a=[i,n];o=function(){for(var e=0;e<a.length;e++)try{return new a[e](r)}catch(i){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){r=null}}),e.extend(this,o),this.purge=function(){o.purge(),o=null}}}),n("moxie/runtime/html5/image/ResizerCanvas",[],function(){function e(i,n){var r=i.width,o=Math.floor(r*n),a=!1;(.5>n||n>2)&&(n=.5>n?.5:2,a=!0);var s=t(i,n);return a?e(s,o/s.width):s}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,w.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t(e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),y=g=v=w=null,b=!1}var g,x,v,y,w,E=this,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return w=e,e.isDetached()?(y=e.getSource(),m.call(this,y),void 0):(h.call(this,e.getSource(),function(e){r&&(y=l(e)),m.call(t,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,w=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&y&&i.can("access_image_binary")&&(x=new a(y)),t={width:e().width||0,height:e().height||0,type:w.type||u.getFileMime(w.name),size:y&&y.length||w.size||0,name:w.name||"",meta:null},R&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),R=n.preserveHeaders,!R){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:w.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:w.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=l(E.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}y=l(i),x&&(y=x.stripHeaders(y),R&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=x.writeHeaders(y)),x.purge(),x=null)}return b=!1,y},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+u.swf_url+'" ',"IE"===t.browser&&(i+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),i+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+u.swf_url+'" />'+'<param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" />'+'<param name="wmode" value="transparent" />'+'<param name="allowscriptaccess" value="always" />'+"</object>","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u<n.length&&r===o);o>=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">'+'<param name="source" value="'+s.xap_url+'"/>'+'<param name="background" value="Transparent"/>'+'<param name="windowless" value="true"/>'+'<param name="enablehtmlaccess" value="true"/>'+'<param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/>'+"</object>",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;i<e.length;i++)t+=(""!==t?"|":"")+e[i].title+" | *."+e[i].extensions.replace(/,/g,";*.");return t}var r={init:function(e){var r=this,o=this.getRuntime();this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],i.each(e,function(e){r.files.push(new t(o.uid,e))})},999),o.shimExec.call(this,"FileInput","init",n(e.accept),e.multiple),this.trigger("ready")},setOption:function(e,t){"accept"==e&&(t=n(t)),this.getRuntime().shimExec.call(this,"FileInput","setOption",e,t)}};return e.FileInput=r}),n("moxie/runtime/silverlight/file/FileDrop",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Dom","moxie/core/utils/Events"],function(e,t,i){var n={init:function(){var e,n=this,r=n.getRuntime();return e=r.getShimContainer(),i.addEvent(e,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},n.uid),i.addEvent(e,"dragenter",function(e){e.preventDefault();var i=t.get(r.uid).dragEnter(e);i&&e.stopPropagation()},n.uid),i.addEvent(e,"drop",function(e){e.preventDefault();var i=t.get(r.uid).dragDrop(e);i&&e.stopPropagation()},n.uid),r.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=n}),n("moxie/runtime/silverlight/file/FileReader",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReader"],function(e,t,i){return e.FileReader=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileReaderSync",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReaderSync"],function(e,t,i){return e.FileReaderSync=t.extend({},i)
+}),n("moxie/runtime/silverlight/runtime/Transporter",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/runtime/Transporter"],function(e,t,i){return e.Transporter=t.extend({},i)}),n("moxie/runtime/silverlight/xhr/XMLHttpRequest",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/xhr/XMLHttpRequest","moxie/runtime/silverlight/file/FileReaderSync","moxie/runtime/silverlight/runtime/Transporter"],function(e,t,i){return e.XMLHttpRequest=t.extend({},i)}),n("moxie/runtime/silverlight/image/Image",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/runtime/flash/image/Image"],function(e,t,i,n){return e.Image=t.extend({},n,{getInfo:function(){var e=this.getRuntime(),n=["tiff","exif","gps","thumb"],r={meta:{}},o=e.shimExec.call(this,"Image","getInfo");return o.meta&&(t.each(n,function(e){var t,i,n,a,s=o.meta[e];if(s&&s.keys)for(r.meta[e]={},i=0,n=s.keys.length;n>i;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&i.extend(d.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return m.parentNode.removeChild(m),void 0}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=t.accept.mimes||o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+f+'_iframe" name="'+f+'_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,y=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)});
+define("../libs/plupload/js/moxie.min", function(){});
 
-        if (typeof options.alwaysShowCalendars === 'boolean')
-            this.alwaysShowCalendars = options.alwaysShowCalendars;
+/**
+ * Plupload - multi-runtime File Uploader
+ * v2.2.1
+ *
+ * Copyright 2013, Moxiecode Systems AB
+ * Released under GPL License.
+ *
+ * License: http://www.plupload.com/license
+ * Contributing: http://www.plupload.com/contributing
+ *
+ * Date: 2016-11-23
+ */
+!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t<i.length;t+=2)e=e.replace(i[t],i[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,"")},buildUrl:function(e,t){var i="";return l.each(t,function(e,t){i+=(i?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),i&&(e+=(e.indexOf("?")>0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t<T.length;t++)e||T[t].status!=l.QUEUED?i++:(e=T[t],this.trigger("BeforeUpload",e)&&(e.status=l.UPLOADING,this.trigger("UploadFile",e)));i==T.length&&(this.state!==l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",T))}}function u(e){e.percent=e.size>0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t;for(w.reset(),e=0;e<T.length;e++)t=T[e],t.size!==i?(w.size+=t.origSize,w.loaded+=t.loaded*t.origSize/t.size):w.size=i,t.status==l.DONE?w.uploaded++:t.status==l.FAILED?w.failed++:w.queued++;w.size===i?w.percent=T.length>0?Math.ceil(100*(w.uploaded/T.length)):0:(w.bytesPerSec=Math.ceil(w.loaded/((+new Date-S||1)/1e3)),w.percent=w.size>0?Math.ceil(100*(w.loaded/w.size)):0)}function c(){var e=A[0]||P[0];return e?e.getRuntime().uid:!1}function f(e,t){if(e.ruid){var i=o.getInfo(e.ruid);if(i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",m),this.bind("UploadFile",E),this.bind("UploadProgress",v),this.bind("StateChanged",b),this.bind("QueueChanged",d),this.bind("Error",z),this.bind("FileUploaded",R),this.bind("Destroy",O)}function g(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,A.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var s=new t.image.Image;try{s.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):(s.downsize(n.width,n.height,n.crop,n.preserve_headers),void 0)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function _(e,i,r){function s(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(a.trigger("Destroy"),g.call(a,I,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function E(e,i){function n(){d-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}))}function s(){var f,g,h,_={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(_.name=i.target_name||i.name),u&&c.chunks&&a.size>u?(h=Math.min(u,a.size-p),f=a.slice(p,p+h)):(h=a.size,f=a),u&&c.chunks&&(e.settings.send_chunk_number?(_.chunk=Math.ceil(p/u),_.chunks=Math.ceil(a.size/u)):(_.offset=p,_.total=a.size)),D=new t.xhr.XMLHttpRequest,D.upload&&(D.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),D.onload=function(){return D.status>=400?(n(),void 0):(d=e.settings.max_retries,h<a.size?(f.destroy(),p+=h,i.loaded=Math.min(p,a.size),e.trigger("ChunkUploaded",i,{offset:i.loaded,total:a.size,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}),"Android Browser"===l.ua.browser&&e.trigger("UploadProgress",i)):i.loaded=i.size,f=g=null,!p||p>=a.size?(i.size!=i.origSize&&(a.destroy(),a=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()})):r(s,1),void 0)},D.onerror=function(){n()},D.onloadend=function(){this.destroy(),D=null},e.settings.multipart&&c.multipart?(D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),g=new t.xhr.FormData,l.each(l.extend(_,e.settings.multipart_params),function(e,t){g.append(t,e)}),g.append(e.settings.file_data_name,f),D.send(g,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(o=l.buildUrl(e.settings.url,l.extend(_,e.settings.multipart_params)),D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),D.hasRequestHeader("Content-Type")||D.setRequestHeader("Content-Type","application/octet-stream"),D.send(f,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var a,o=e.settings.url,u=e.settings.chunk_size,d=e.settings.max_retries,c=e.features,p=0;i.loaded&&(p=i.loaded=u?u*Math.floor(i.loaded/u):0),a=i.getSource(),!l.isEmptyObj(e.settings.resize)&&f(a,"send_binary_string")&&-1!==l.inArray(a.type,["image/jpeg","image/png"])?h.call(this,a,e.settings.resize,function(e){a=e,i.size=e.size,s()}):s()}function v(e,t){u(t)}function b(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function y(){D&&D.abort()}function R(e){d(),r(function(){a.call(e)},1)}function z(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function O(e){e.stop(),l.each(T,function(e){e.destroy()}),T=[],A.length&&(l.each(A,function(e){e.destroy()}),A=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),F={},U=!1,S=D=null,w.reset()}var I,S,w,D,x=l.guid(),T=[],F={},A=[],P=[],U=!1;I={runtimes:o.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},_.call(this,e,null,!0),w=new l.QueueProgress,l.extend(this,{id:x,uid:x,state:l.STOPPED,features:{},runtime:null,files:T,settings:I,total:w,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),p.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?(g.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){_.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){A.length&&l.each(A,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,A.length&&l.each(A,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=T.length-1;t>=0;t--)if(T[t].id===e)return T[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(T.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=T.length-1;i>=0;i--)if(T[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=T.splice(e===i?0:e,t===i?T.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n<t.length;n++)if(t[n].fn.apply(t[n].scope,i)===!1)return!1}return!0},bind:function(e,t,i,n){l.Uploader.prototype.bind.call(this,e,t,n,i)},destroy:function(){this.trigger("Destroy"),I=w=null,this.unbindAll()}})},l.Uploader.prototype=t.core.EventTarget.instance,l.File=function(){function e(e){l.extend(this,{id:l.guid(),name:e.name||e.fileName,type:e.type||"",size:e.size||e.fileSize,origSize:e.size||e.fileSize,loaded:0,percent:0,status:l.QUEUED,lastModifiedDate:e.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return-1!==l.inArray(l.typeOf(e),["blob","file"])?e:null},getSource:function(){return t[this.id]?t[this.id]:null},destroy:function(){var e=this.getSource();e&&(e.destroy(),delete t[this.id])}}),t[this.id]=e}var t={};return e}(),l.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=l}(this,e)});
+define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined, Plupload, Template) {
+    var Upload = {
+        list: {},
+        config: {
+            container: document.body,
+            classname: '.plupload:not([initialized])',
+            previewtpl: '<li class="col-xs-3"><a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"><img src="<%=fullurl%>" class="img-responsive"></a><a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a></li>',
+        },
+        events: {
+            //初始化完成
+            onPostInit: function (up) {
 
-        // update day names order to firstDay
-        if (this.locale.firstDay != 0) {
-            var iterator = this.locale.firstDay;
-            while (iterator > 0) {
-                this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());
-                iterator--;
-            }
-        }
+            },
+            //文件添加成功后
+            onFileAdded: function (up, files) {
+                var button = up.settings.button;
+                $(button).data("bakup-html", $(button).html());
+                var maxcount = $(button).data("maxcount");
+                var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
+                maxcount = typeof maxcount !== "undefined" ? maxcount : 0;
+                if (maxcount > 0 && input_id) {
+                    var inputObj = $("#" + input_id);
+                    if (inputObj.size() > 0) {
+                        var value = $.trim(inputObj.val());
+                        var nums = value === '' ? 0 : value.split(/\,/).length;
+                        var remains = maxcount - nums;
+                        if (files.length > remains) {
+                            for (var i = 0; i < files.length; i++) {
+                                up.removeFile(files[i]);
+                            }
+                            Toastr.error(__('You can upload up to %d file%s', remains));
+                            return false;
+                        }
+                    }
+                }
+                //添加后立即上传
+                setTimeout(function () {
+                    up.start();
+                }, 1);
+            },
+            //上传进行中的回调
+            onUploadProgress: function (up, file) {
 
-        var start, end, range;
+            },
+            //上传之前的回调
+            onBeforeUpload: function (up, file) {
 
-        //if no start/end dates set, check if an input element contains initial values
-        if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {
-            if ($(this.element).is('input[type=text]')) {
-                var val = $(this.element).val(),
-                    split = val.split(this.locale.separator);
+            },
+            //上传成功的回调
+            onUploadSuccess: function (up, ret) {
+                var button = up.settings.button;
+                var onUploadSuccess = up.settings.onUploadSuccess;
+                var data = typeof ret.data !== 'undefined' ? ret.data : null;
+                //上传成功后回调
+                if (button) {
+                    //如果有文本框则填充
+                    var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
+                    if (input_id) {
+                        var urlArr = [];
+                        var inputObj = $("#" + input_id);
+                        if ($(button).data("multiple") && inputObj.val() !== "") {
+                            urlArr.push(inputObj.val());
+                        }
+                        urlArr.push(data.url);
+                        inputObj.val(urlArr.join(",")).trigger("change");
+                    }
+                    //如果有回调函数
+                    var onDomUploadSuccess = $(button).data("upload-success");
+                    if (onDomUploadSuccess) {
+                        if (typeof onDomUploadSuccess !== 'function' && typeof Upload.api.custom[onDomUploadSuccess] === 'function') {
+                            onDomUploadSuccess = Upload.api.custom[onDomUploadSuccess];
+                        }
+                        if (typeof onDomUploadSuccess === 'function') {
+                            var result = onDomUploadSuccess.call(button, data, ret);
+                            if (result === false)
+                                return;
+                        }
+                    }
+                }
 
-                start = end = null;
+                if (typeof onUploadSuccess === 'function') {
+                    var result = onUploadSuccess.call(button, data, ret);
+                    if (result === false)
+                        return;
+                }
+            },
+            //上传错误的回调
+            onUploadError: function (up, ret) {
+                var button = up.settings.button;
+                var onUploadError = up.settings.onUploadError;
+                var data = typeof ret.data !== 'undefined' ? ret.data : null;
+                if (button) {
+                    var onDomUploadError = $(button).data("upload-error");
+                    if (onDomUploadError) {
+                        if (typeof onDomUploadError !== 'function' && typeof Upload.api.custom[onDomUploadError] === 'function') {
+                            onDomUploadError = Upload.api.custom[onDomUploadError];
+                        }
+                        if (typeof onDomUploadError === 'function') {
+                            var result = onDomUploadError.call(button, data, ret);
+                            if (result === false)
+                                return;
+                        }
+                    }
+                }
 
-                if (split.length == 2) {
-                    start = moment(split[0], this.locale.format);
-                    end = moment(split[1], this.locale.format);
-                } else if (this.singleDatePicker && val !== "") {
-                    start = moment(val, this.locale.format);
-                    end = moment(val, this.locale.format);
+                if (typeof onUploadError === 'function') {
+                    var result = onUploadError.call(button, data, ret);
+                    if (result === false) {
+                        return;
+                    }
                 }
-                if (start !== null && end !== null) {
-                    this.setStartDate(start);
-                    this.setEndDate(end);
+                Toastr.error(ret.msg + "(code:" + ret.code + ")");
+            },
+            //服务器响应数据后
+            onUploadResponse: function (response) {
+                try {
+                    var ret = typeof response === 'object' ? response : JSON.parse(response);
+                    if (!ret.hasOwnProperty('code')) {
+                        $.extend(ret, {code: -2, msg: response, data: null});
+                    }
+                } catch (e) {
+                    var ret = {code: -1, msg: e.message, data: null};
+                }
+                return ret;
+            },
+            //上传全部结束后
+            onUploadComplete: function (up, files) {
+                var button = up.settings.button;
+                var onUploadComplete = up.settings.onUploadComplete;
+                if (button) {
+                    var onDomUploadComplete = $(button).data("upload-complete");
+                    if (onDomUploadComplete) {
+                        if (typeof onDomUploadComplete !== 'function' && typeof Upload.api.custom[onDomUploadComplete] === 'function') {
+                            onDomUploadComplete = Upload.api.custom[onDomUploadComplete];
+                        }
+                        if (typeof onDomUploadComplete === 'function') {
+                            var result = onDomUploadComplete.call(button, files);
+                            if (result === false)
+                                return;
+                        }
+                    }
                 }
-            }
-        }
 
-        if (typeof options.ranges === 'object') {
-            for (range in options.ranges) {
+                if (typeof onUploadComplete === 'function') {
+                    var result = onUploadComplete.call(button, files);
+                    if (result === false) {
+                        return;
+                    }
+                }
+            }
+        },
+        api: {
+            //Plupload上传
+            plupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
+                element = typeof element === 'undefined' ? Upload.config.classname : element;
+                $(element, Upload.config.container).each(function () {
+                    if ($(this).attr("initialized")) {
+                        return true;
+                    }
+                    $(this).attr("initialized", true);
+                    var that = this;
+                    var id = $(this).prop("id");
+                    var url = $(this).data("url");
+                    var maxsize = $(this).data("maxsize");
+                    var mimetype = $(this).data("mimetype");
+                    var multipart = $(this).data("multipart");
+                    var multiple = $(this).data("multiple");
 
-                if (typeof options.ranges[range][0] === 'string')
-                    start = moment(options.ranges[range][0], this.locale.format);
-                else
-                    start = moment(options.ranges[range][0]);
+                    //填充ID
+                    var input_id = $(that).data("input-id") ? $(that).data("input-id") : "";
+                    //预览ID
+                    var preview_id = $(that).data("preview-id") ? $(that).data("preview-id") : "";
 
-                if (typeof options.ranges[range][1] === 'string')
-                    end = moment(options.ranges[range][1], this.locale.format);
-                else
-                    end = moment(options.ranges[range][1]);
-
-                // If the start or end date exceed those allowed by the minDate or dateLimit
-                // options, shorten the range to the allowable period.
-                if (this.minDate && start.isBefore(this.minDate))
-                    start = this.minDate.clone();
-
-                var maxDate = this.maxDate;
-                if (this.dateLimit && maxDate && start.clone().add(this.dateLimit).isAfter(maxDate))
-                    maxDate = start.clone().add(this.dateLimit);
-                if (maxDate && end.isAfter(maxDate))
-                    end = maxDate.clone();
-
-                // If the end of the range is before the minimum or the start of the range is
-                // after the maximum, don't display this range option at all.
-                if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) 
-                  || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))
-                    continue;
-
-                //Support unicode chars in the range names.
-                var elem = document.createElement('textarea');
-                elem.innerHTML = range;
-                var rangeHtml = elem.value;
-
-                this.ranges[rangeHtml] = [start, end];
-            }
-
-            var list = '<ul>';
-            for (range in this.ranges) {
-                list += '<li data-range-key="' + range + '">' + range + '</li>';
-            }
-            if (this.showCustomRangeLabel) {
-                list += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + '</li>';
-            }
-            list += '</ul>';
-            this.container.find('.ranges').prepend(list);
-        }
-
-        if (typeof cb === 'function') {
-            this.callback = cb;
-        }
-
-        if (!this.timePicker) {
-            this.startDate = this.startDate.startOf('day');
-            this.endDate = this.endDate.endOf('day');
-            this.container.find('.calendar-time').hide();
-        }
-
-        //can't be used together for now
-        if (this.timePicker && this.autoApply)
-            this.autoApply = false;
-
-        if (this.autoApply && typeof options.ranges !== 'object') {
-            this.container.find('.ranges').hide();
-        } else if (this.autoApply) {
-            this.container.find('.applyBtn, .cancelBtn').addClass('hide');
-        }
-
-        if (this.singleDatePicker) {
-            this.container.addClass('single');
-            this.container.find('.calendar.left').addClass('single');
-            this.container.find('.calendar.left').show();
-            this.container.find('.calendar.right').hide();
-            this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide();
-            if (this.timePicker) {
-                this.container.find('.ranges ul').hide();
-            } else {
-                this.container.find('.ranges').hide();
-            }
-        }
-
-        if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {
-            this.container.addClass('show-calendar');
-        }
-
-        this.container.addClass('opens' + this.opens);
-
-        //swap the position of the predefined ranges if opens right
-        if (typeof options.ranges !== 'undefined' && this.opens == 'right') {
-            this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() );
-        }
-
-        //apply CSS classes and labels to buttons
-        this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);
-        if (this.applyClass.length)
-            this.container.find('.applyBtn').addClass(this.applyClass);
-        if (this.cancelClass.length)
-            this.container.find('.cancelBtn').addClass(this.cancelClass);
-        this.container.find('.applyBtn').html(this.locale.applyLabel);
-        this.container.find('.cancelBtn').html(this.locale.cancelLabel);
-
-        //
-        // event listeners
-        //
-
-        this.container.find('.calendar')
-            .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))
-            .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))
-            .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))
-            .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))
-            .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))
-            .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))
-            .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))
-            .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))
-            .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))
-            .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this))
-            .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this))
-            .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this))
-            .on('keydown.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsKeydown, this));
-
-        this.container.find('.ranges')
-            .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))
-            .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))
-            .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))
-            .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))
-            .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));
-
-        if (this.element.is('input') || this.element.is('button')) {
-            this.element.on({
-                'click.daterangepicker': $.proxy(this.show, this),
-                'focus.daterangepicker': $.proxy(this.show, this),
-                'keyup.daterangepicker': $.proxy(this.elementChanged, this),
-                'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility
-            });
-        } else {
-            this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
-            this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));
-        }
-
-        //
-        // if attached to a text input, set the initial value
-        //
+                    //上传URL
+                    url = url ? url : Config.upload.uploadurl;
+                    url = Fast.api.fixurl(url);
+                    //最大可上传文件大小
+                    maxsize = typeof maxsize !== "undefined" ? maxsize : Config.upload.maxsize;
+                    //文件类型
+                    mimetype = typeof mimetype !== "undefined" ? mimetype : Config.upload.mimetype;
+                    //请求的表单参数
+                    multipart = typeof multipart !== "undefined" ? multipart : Config.upload.multipart;
+                    //是否支持批量上传
+                    multiple = typeof multiple !== "undefined" ? multiple : Config.upload.multiple;
+                    var mimetypeArr = new Array();
+                    //支持后缀和Mimetype格式,以,分隔
+                    if (mimetype && mimetype !== "*" && mimetype.indexOf("/") === -1)
+                    {
+                        var tempArr = mimetype.split(',');
+                        for (var i = 0; i < tempArr.length; i++)
+                        {
+                            mimetypeArr.push({title: __('Files'), extensions: tempArr[i]});
+                        }
+                        mimetype = mimetypeArr;
+                    }
+                    //生成Plupload实例
+                    Upload.list[id] = new Plupload.Uploader({
+                        runtimes: 'html5,flash,silverlight,html4',
+                        multi_selection: multiple, //是否允许多选批量上传
+                        browse_button: id, // 浏览按钮的ID
+                        container: $(this).parent().get(0), //取按钮的上级元素
+                        flash_swf_url: '/assets/libs/plupload/js/Moxie.swf',
+                        silverlight_xap_url: '/assets/libs/plupload/js/Moxie.xap',
+                        filters: {
+                            max_file_size: maxsize,
+                            mime_types: mimetype,
+                        },
+                        url: url,
+                        multipart_params: $.isArray(multipart) ? {} : multipart,
+                        init: {
+                            PostInit: Upload.events.onPostInit,
+                            FilesAdded: Upload.events.onFileAdded,
+                            BeforeUpload: Upload.events.onBeforeUpload,
+                            UploadProgress: function (up, file) {
+                                var button = up.settings.button;
+                                $(button).prop("disabled", true).html("<i class='fa fa-upload'></i> " + __('Upload') + file.percent + "%");
+                                Upload.events.onUploadProgress(up, file);
+                            },
+                            FileUploaded: function (up, file, info) {
+                                var button = up.settings.button;
+                                //还原按钮文字及状态
+                                $(button).prop("disabled", false).html($(button).data("bakup-html"));
+                                var ret = Upload.events.onUploadResponse(info.response, info, up, file);
+                                file.ret = ret;
+                                if (ret.code === 1) {
+                                    Upload.events.onUploadSuccess(up, ret, file);
+                                } else {
+                                    Upload.events.onUploadError(up, ret, file);
+                                }
+                            },
+                            UploadComplete: Upload.events.onUploadComplete,
+                            Error: function (up, err) {
+                                var button = up.settings.button;
+                                $(button).prop("disabled", false).html($(button).data("bakup-html"));
+                                var ret = {code: err.code, msg: err.message, data: null};
+                                Upload.events.onUploadError(up, ret);
+                            }
+                        },
+                        onUploadSuccess: onUploadSuccess,
+                        onUploadError: onUploadError,
+                        onUploadComplete: onUploadComplete,
+                        button: that
+                    });
 
-        if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
-            this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
-            this.element.trigger('change');
-        } else if (this.element.is('input') && this.autoUpdateInput) {
-            this.element.val(this.startDate.format(this.locale.format));
-            this.element.trigger('change');
+                    //拖动排序
+                    if (preview_id && multiple) {
+                        require(['dragsort'], function () {
+                            $("#" + preview_id).dragsort({
+                                dragSelector: "li",
+                                dragEnd: function () {
+                                    $("#" + preview_id).trigger("fa.preview.change");
+                                },
+                                placeHolderTemplate: '<li class="col-xs-3"></li>'
+                            });
+                        });
+                    }
+                    if (preview_id && input_id) {
+                        $(document.body).on("keyup change", "#" + input_id, function () {
+                            var inputStr = $("#" + input_id).val();
+                            var inputArr = inputStr.split(/\,/);
+                            $("#" + preview_id).empty();
+                            var tpl = $("#" + preview_id).data("template") ? $("#" + preview_id).data("template") : "";
+                            $.each(inputArr, function (i, j) {
+                                if (!j) {
+                                    return true;
+                                }
+                                var data = {url: j, fullurl: Fast.api.cdnurl(j), data: $(that).data()};
+                                var html = tpl ? Template(tpl, data) : Template.render(Upload.config.previewtpl, data);
+                                $("#" + preview_id).append(html);
+                            });
+                        });
+                        $("#" + input_id).trigger("change");
+                    }
+                    if (preview_id) {
+                        // 监听事件
+                        $(document.body).on("fa.preview.change", "#" + preview_id, function () {
+                            var urlArr = new Array();
+                            $("#" + preview_id + " [data-url]").each(function (i, j) {
+                                urlArr.push($(this).data("url"));
+                            });
+                            if (input_id) {
+                                $("#" + input_id).val(urlArr.join(","));
+                            }
+                        });
+                        // 移除按钮事件
+                        $(document.body).on("click", "#" + preview_id + " .btn-trash", function () {
+                            $(this).closest("li").remove();
+                            $("#" + preview_id).trigger("fa.preview.change");
+                        });
+                    }
+                    Upload.list[id].init();
+                });
+            },
+            // AJAX异步上传
+            send: function (file, onUploadSuccess, onUploadError, onUploadComplete) {
+                var index = Layer.msg(__('Uploading'), {offset: 't', time: 0});
+                var id = Plupload.guid();
+                var _onPostInit = Upload.events.onPostInit;
+                Upload.events.onPostInit = function () {
+                    // 当加载完成后添加文件并上传
+                    Upload.list[id].addFile(file);
+                    //Upload.list[id].start();
+                };
+                $('<button type="button" id="' + id + '" class="btn btn-danger hidden plupload" />').appendTo("body");
+                $("#" + id).data("upload-complete", function (files) {
+                    Upload.events.onPostInit = _onPostInit;
+                    Layer.close(index);
+                });
+                Upload.api.plupload("#" + id, onUploadSuccess, onUploadError, onUploadComplete);
+            },
+            custom: {
+                //自定义上传完成回调
+                afteruploadcallback: function (response) {
+                    console.log(this, response);
+                    alert("Custom Callback,Response URL:" + response.url);
+                },
+            },
         }
-
     };
 
-    DateRangePicker.prototype = {
-
-        constructor: DateRangePicker,
-
-        setStartDate: function(startDate) {
-            if (typeof startDate === 'string')
-                this.startDate = moment(startDate, this.locale.format);
-
-            if (typeof startDate === 'object')
-                this.startDate = moment(startDate);
-
-            if (!this.timePicker)
-                this.startDate = this.startDate.startOf('day');
-
-            if (this.timePicker && this.timePickerIncrement)
-                this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
-
-            if (this.minDate && this.startDate.isBefore(this.minDate)) {
-                this.startDate = this.minDate.clone();
-                if (this.timePicker && this.timePickerIncrement)
-                    this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
-            }
+    return Upload;
+});
+/*! nice-validator 1.1.3
+ * (c) 2012-2017 Jony Zhang <niceue@live.com>, MIT Licensed
+ * https://github.com/niceue/nice-validator
+ */
+;(function(factory) {
+    typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) :
+    typeof define === 'function' && define.amd ? define('validator-core',['jquery'], factory) :
+    factory(jQuery);
+}(function($, undefined) {
+    "use strict";
 
-            if (this.maxDate && this.startDate.isAfter(this.maxDate)) {
-                this.startDate = this.maxDate.clone();
-                if (this.timePicker && this.timePickerIncrement)
-                    this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
-            }
+    var NS = 'validator',
+        CLS_NS = '.' + NS,
+        CLS_NS_RULE = '.rule',
+        CLS_NS_FIELD = '.field',
+        CLS_NS_FORM = '.form',
+        CLS_WRAPPER = 'nice-' + NS,
+        CLS_MSG_BOX = 'msg-box',
+        ARIA_INVALID = 'aria-invalid',
+        DATA_RULE = 'data-rule',
+        DATA_MSG = 'data-msg',
+        DATA_TIP = 'data-tip',
+        DATA_OK = 'data-ok',
+        DATA_TIMELY = 'data-timely',
+        DATA_TARGET = 'data-target',
+        DATA_DISPLAY = 'data-display',
+        DATA_MUST = 'data-must',
+        NOVALIDATE = 'novalidate',
+        INPUT_SELECTOR = ':verifiable',
 
-            if (!this.isShowing)
-                this.updateElement();
+        rRules = /(&)?(!)?\b(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?\s*(;|\|)?/g,
+        rRule = /(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?/,
+        rDisplay = /(?:([^:;\(\[]*):)?(.*)/,
+        rDoubleBytes = /[^\x00-\xff]/g,
+        rPos = /top|right|bottom|left/,
+        rAjaxType = /(?:(cors|jsonp):)?(?:(post|get):)?(.+)/i,
+        rUnsafe = /[<>'"`\\]|&#x?\d+[A-F]?;?|%3[A-F]/gmi,
 
-            this.updateMonthsInView();
+        noop = $.noop,
+        proxy = $.proxy,
+        trim = $.trim,
+        isFunction = $.isFunction,
+        isString = function(s) {
+            return typeof s === 'string';
         },
-
-        setEndDate: function(endDate) {
-            if (typeof endDate === 'string')
-                this.endDate = moment(endDate, this.locale.format);
-
-            if (typeof endDate === 'object')
-                this.endDate = moment(endDate);
-
-            if (!this.timePicker)
-                this.endDate = this.endDate.add(1,'d').startOf('day').subtract(1,'second');
-
-            if (this.timePicker && this.timePickerIncrement)
-                this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);
-
-            if (this.endDate.isBefore(this.startDate))
-                this.endDate = this.startDate.clone();
-
-            if (this.maxDate && this.endDate.isAfter(this.maxDate))
-                this.endDate = this.maxDate.clone();
-
-            if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))
-                this.endDate = this.startDate.clone().add(this.dateLimit);
-
-            this.previousRightTime = this.endDate.clone();
-
-            if (!this.isShowing)
-                this.updateElement();
-
-            this.updateMonthsInView();
+        isObject = function(o) {
+            return o && Object.prototype.toString.call(o) === '[object Object]';
         },
-
-        isInvalidDate: function() {
-            return false;
-        },
-
-        isCustomDate: function() {
-            return false;
+        isIE = document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1),
+        attr = function(el, key, value) {
+            if (!el || !el.tagName) return null;
+            if (value !== undefined) {
+                if (value === null) el.removeAttribute(key);
+                else el.setAttribute(key, '' + value);
+            } else {
+                return el.getAttribute(key);
+            }
         },
+        novalidateonce,
+        preinitialized = {},
 
-        updateView: function() {
-            if (this.timePicker) {
-                this.renderTimePicker('left');
-                this.renderTimePicker('right');
-                if (!this.endDate) {
-                    this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');
-                } else {
-                    this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');
-                }
-            }
-            if (this.endDate) {
-                this.container.find('input[name="daterangepicker_end"]').removeClass('active');
-                this.container.find('input[name="daterangepicker_start"]').addClass('active');
-            } else {
-                this.container.find('input[name="daterangepicker_end"]').addClass('active');
-                this.container.find('input[name="daterangepicker_start"]').removeClass('active');
-            }
-            this.updateMonthsInView();
-            this.updateCalendars();
-            this.updateFormInputs();
+        defaults = {
+            debug: 0,
+            theme: 'default',
+            ignore: '',
+            focusInvalid: true,
+            focusCleanup: false,
+            stopOnError: false,
+            beforeSubmit: null,
+            valid: null,
+            invalid: null,
+            validation: null,
+            formClass: 'n-default',
+            validClass: 'n-valid',
+            invalidClass: 'n-invalid',
+            bindClassTo: null
         },
-
-        updateMonthsInView: function() {
-            if (this.endDate) {
-
-                //if both dates are visible already, do nothing
-                if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&
-                    (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
-                    &&
-                    (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
-                    ) {
-                    return;
-                }
-
-                this.leftCalendar.month = this.startDate.clone().date(2);
-                if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {
-                    this.rightCalendar.month = this.endDate.clone().date(2);
-                } else {
-                    this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
-                }
-
-            } else {
-                if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {
-                    this.leftCalendar.month = this.startDate.clone().date(2);
-                    this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');
+        fieldDefaults = {
+            timely: 1,
+            display: null,
+            target: null,
+            ignoreBlank: false,
+            showOk: true,
+            // Translate ajax response to validation result
+            dataFilter: function (data) {
+                if ( isString(data) || ( isObject(data) && ('error' in data || 'ok' in data) ) ) {
+                    return data;
                 }
-            }
-            if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {
-              this.rightCalendar.month = this.maxDate.clone().date(2);
-              this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');
-            }
-        },
-
-        updateCalendars: function() {
-
-            if (this.timePicker) {
-                var hour, minute, second;
-                if (this.endDate) {
-                    hour = parseInt(this.container.find('.left .hourselect').val(), 10);
-                    minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
-                    second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
-                    if (!this.timePicker24Hour) {
-                        var ampm = this.container.find('.left .ampmselect').val();
-                        if (ampm === 'PM' && hour < 12)
-                            hour += 12;
-                        if (ampm === 'AM' && hour === 12)
-                            hour = 0;
-                    }
+            },
+            msgMaker: function(opt) {
+                var html;
+                html = '<span role="alert" class="msg-wrap n-'+ opt.type + '">' + opt.arrow;
+                if (opt.result) {
+                    $.each(opt.result, function(i, obj){
+                        html += '<span class="n-'+ obj.type +'">' + opt.icon + '<span class="n-msg">' + obj.msg + '</span></span>';
+                    });
                 } else {
-                    hour = parseInt(this.container.find('.right .hourselect').val(), 10);
-                    minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
-                    second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
-                    if (!this.timePicker24Hour) {
-                        var ampm = this.container.find('.right .ampmselect').val();
-                        if (ampm === 'PM' && hour < 12)
-                            hour += 12;
-                        if (ampm === 'AM' && hour === 12)
-                            hour = 0;
-                    }
+                    html += opt.icon + '<span class="n-msg">' + opt.msg + '</span>';
                 }
-                this.leftCalendar.month.hour(hour).minute(minute).second(second);
-                this.rightCalendar.month.hour(hour).minute(minute).second(second);
-            }
-
-            this.renderCalendar('left');
-            this.renderCalendar('right');
-
-            //highlight any predefined range matching the current start and end dates
-            this.container.find('.ranges li').removeClass('active');
-            if (this.endDate == null) return;
-
-            this.calculateChosenLabel();
+                html += '</span>';
+                return html;
+            },
+            msgWrapper: 'span',
+            msgArrow: '',
+            msgIcon: '<span class="n-icon"></span>',
+            msgClass: 'n-right',
+            msgStyle: '',
+            msgShow: null,
+            msgHide: null
         },
+        themes = {};
 
-        renderCalendar: function(side) {
-
-            //
-            // Build the matrix of dates that will populate the calendar
-            //
-
-            var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;
-            var month = calendar.month.month();
-            var year = calendar.month.year();
-            var hour = calendar.month.hour();
-            var minute = calendar.month.minute();
-            var second = calendar.month.second();
-            var daysInMonth = moment([year, month]).daysInMonth();
-            var firstDay = moment([year, month, 1]);
-            var lastDay = moment([year, month, daysInMonth]);
-            var lastMonth = moment(firstDay).subtract(1, 'month').month();
-            var lastYear = moment(firstDay).subtract(1, 'month').year();
-            var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();
-            var dayOfWeek = firstDay.day();
+    /** jQuery Plugin
+     * @param {Object} options
+        debug         {Boolean}     0               Whether to enable debug mode
+        timely        {Number}      1               Whether to enable timely validation
+        theme         {String}     'default'        Theme name
+        stopOnError   {Boolean}     false           Whether to stop validate when found an error input
+        focusCleanup  {Boolean}     false           Whether to clean up the field message when focus the field
+        focusInvalid  {Boolean}     true            Whether to focus the field that is invalid
+        ignoreBlank   {Boolean}     false           When the field has no value, whether to ignore validation
+        ignore        {jqSelector}    ''            Ignored fields (Using jQuery selector)
 
-            //initialize a 6 rows x 7 columns array for the calendar
-            var calendar = [];
-            calendar.firstDay = firstDay;
-            calendar.lastDay = lastDay;
+        beforeSubmit  {Function}                    Do something before submit form
+        dataFilter    {Function}                    Convert ajax results
+        valid         {Function}                    Triggered when the form is valid
+        invalid       {Function}                    Triggered when the form is invalid
+        validClass    {String}      'n-valid'       Add this class name to a valid field
+        invalidClass  {String}      'n-invalid'     Add this class name to a invalid field
+        bindClassTo   {jqSelector}  ':verifiable'   Which element should the className binding to
 
-            for (var i = 0; i < 6; i++) {
-                calendar[i] = [];
-            }
+        display       {Function}                    Callback function to get dynamic display
+        target        {Function}                    Callback function to get dynamic target
+        msgShow       {Function}                    Trigger this callback when show message
+        msgHide       {Function}                    Trigger this callback when hide message
+        msgWrapper    {String}      'span'          Message wrapper tag name
+        msgMaker      {Function}                    Callback function to make message HTML
+        msgArrow      {String}                      Message arrow template
+        msgIcon       {String}                      Message icon template
+        msgStyle      {String}                      Custom message css style
+        msgClass      {String}                      Additional added to the message class names
+        formClass     {String}                      Additional added to the form class names
 
-            //populate the calendar with date objects
-            var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;
-            if (startDay > daysInLastMonth)
-                startDay -= 7;
+        messages      {Object}                      Custom messages for the current instance
+        rules         {Object}                      Custom rules for the current instance
+        fields        {Object}                      Field validation configuration
+        {String}        key    name|#id
+        {String|Object} value                       Rule string or an object which can pass more arguments
 
-            if (dayOfWeek == this.locale.firstDay)
-                startDay = daysInLastMonth - 6;
+        fields[key][rule]       {String}            Rule string
+        fields[key][display]    {String|Function}
+        fields[key][tip]        {String}            Custom tip message
+        fields[key][ok]         {String}            Custom success message
+        fields[key][msg]        {Object}            Custom error message
+        fields[key][msgStyle]   {String}            Custom message style
+        fields[key][msgClass]   {String}            A className which added to message placeholder element
+        fields[key][msgWrapper] {String}            Tag name of the message placeholder element
+        fields[key][msgMaker]   {Function}          A function to custom message HTML
+        fields[key][dataFilter] {Function}          A function to convert ajax results
+        fields[key][valid]      {Function}          A function triggered when field is valid
+        fields[key][invalid]    {Function}          A function triggered when field is invalid
+        fields[key][must]       {Boolean}           If set true, we always check the field even has remote checking
+        fields[key][timely]     {Boolean}           Whether to enable timely validation
+        fields[key][target]     {jqSelector}        Define placement of a message
+     */
+    $.fn.validator = function(options) {
+        var that = this,
+            args = arguments;
 
-            var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);
+        if (that.is(INPUT_SELECTOR)) return that;
+        if (!that.is('form')) that = this.find('form');
+        if (!that.length) that = this;
 
-            var col, row;
-            for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {
-                if (i > 0 && col % 7 === 0) {
-                    col = 0;
-                    row++;
-                }
-                calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);
-                curDate.hour(12);
+        that.each(function() {
+            var instance = $(this).data(NS);
 
-                if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {
-                    calendar[row][col] = this.minDate.clone();
+            if (instance) {
+                if ( isString(options) ) {
+                    if ( options.charAt(0) === '_' ) return;
+                    instance[options].apply(instance, [].slice.call(args, 1));
                 }
-
-                if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {
-                    calendar[row][col] = this.maxDate.clone();
+                else if (options) {
+                    instance._reset(true);
+                    instance._init(this, options);
                 }
-
-            }
-
-            //make the calendar object available to hoverDate/clickDate
-            if (side == 'left') {
-                this.leftCalendar.calendar = calendar;
             } else {
-                this.rightCalendar.calendar = calendar;
+                new Validator(this, options);
             }
+        });
 
-            //
-            // Display the calendar
-            //
-
-            var minDate = side == 'left' ? this.minDate : this.startDate;
-            var maxDate = this.maxDate;
-            var selected = side == 'left' ? this.startDate : this.endDate;
-            var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};
-
-            var html = '<table class="table-condensed">';
-            html += '<thead>';
-            html += '<tr>';
-
-            // add empty cell for week number
-            if (this.showWeekNumbers || this.showISOWeekNumbers)
-                html += '<th></th>';
+        return this;
+    };
 
-            if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {
-                html += '<th class="prev available"><i class="fa fa-' + arrow.left + ' glyphicon glyphicon-' + arrow.left + '"></i></th>';
-            } else {
-                html += '<th></th>';
-            }
 
-            var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY");
+    // Validate a field, or an area
+    $.fn.isValid = function(callback, hideMsg) {
+        var me = _getInstance(this[0]),
+            hasCallback = isFunction(callback),
+            ret, opt;
 
-            if (this.showDropdowns) {
-                var currentMonth = calendar[1][1].month();
-                var currentYear = calendar[1][1].year();
-                var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);
-                var minYear = (minDate && minDate.year()) || (currentYear - 50);
-                var inMinYear = currentYear == minYear;
-                var inMaxYear = currentYear == maxYear;
+        if (!me) return true;
+        if (!hasCallback && hideMsg === undefined) hideMsg = callback;
+        me.checkOnly = !!hideMsg;
+        opt = me.options;
 
-                var monthHtml = '<select class="monthselect">';
-                for (var m = 0; m < 12; m++) {
-                    if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) {
-                        monthHtml += "<option value='" + m + "'" +
-                            (m === currentMonth ? " selected='selected'" : "") +
-                            ">" + this.locale.monthNames[m] + "</option>";
-                    } else {
-                        monthHtml += "<option value='" + m + "'" +
-                            (m === currentMonth ? " selected='selected'" : "") +
-                            " disabled='disabled'>" + this.locale.monthNames[m] + "</option>";
-                    }
+        ret = me._multiValidate(
+            this.is(INPUT_SELECTOR) ? this : this.find(INPUT_SELECTOR),
+            function(isValid){
+                if (!isValid && opt.focusInvalid && !me.checkOnly) {
+                    // navigate to the error element
+                    me.$el.find('[' + ARIA_INVALID + ']:first').focus();
                 }
-                monthHtml += "</select>";
-
-                var yearHtml = '<select class="yearselect">';
-                for (var y = minYear; y <= maxYear; y++) {
-                    yearHtml += '<option value="' + y + '"' +
-                        (y === currentYear ? ' selected="selected"' : '') +
-                        '>' + y + '</option>';
+                if (hasCallback) {
+                    if (callback.length) {
+                        callback(isValid);
+                    } else if (isValid) {
+                        callback();
+                    }
                 }
-                yearHtml += '</select>';
-
-                dateHtml = monthHtml + yearHtml;
+                me.checkOnly = false;
             }
+        );
 
-            html += '<th colspan="5" class="month">' + dateHtml + '</th>';
-            if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {
-                html += '<th class="next available"><i class="fa fa-' + arrow.right + ' glyphicon glyphicon-' + arrow.right + '"></i></th>';
-            } else {
-                html += '<th></th>';
-            }
+        // If you pass a callback, we maintain the jQuery object chain
+        return hasCallback ? this : ret;
+    };
+
+    $.extend($.expr.pseudos || $.expr[':'], {
+        // A faster selector than ":input:not(:submit,:button,:reset,:image,:disabled,[contenteditable])"
+        verifiable: function(elem) {
+            var name = elem.nodeName.toLowerCase();
 
-            html += '</tr>';
-            html += '<tr>';
+            return ( name === 'input' && !({submit: 1, button: 1, reset: 1, image: 1})[elem.type] ||
+                     name === 'select' ||
+                     name === 'textarea' ||
+                     elem.contentEditable === 'true'
+                    ) && !elem.disabled;
+        },
+        // any value, but not only whitespace
+        filled: function(elem) {
+            return !!trim($(elem).val());
+        }
+    });
 
-            // add week number label
-            if (this.showWeekNumbers || this.showISOWeekNumbers)
-                html += '<th class="week">' + this.locale.weekLabel + '</th>';
+    /**
+     * Creates a new Validator
+     *
+     * @class
+     * @param {Element} element - form element
+     * @param {Object}  options - options for validator
+     */
+    function Validator(element, options) {
+        var me = this;
 
-            $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {
-                html += '<th>' + dayOfWeek + '</th>';
-            });
+        if ( !(me instanceof Validator) ) {
+            return new Validator(element, options);
+        }
 
-            html += '</tr>';
-            html += '</thead>';
-            html += '<tbody>';
+        if (Validator.pending) {
+            $(window).on('validatorready', init);
+        } else {
+            init();
+        }
 
-            //adjust maxDate to reflect the dateLimit setting in order to
-            //grey out end dates beyond the dateLimit
-            if (this.endDate == null && this.dateLimit) {
-                var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');
-                if (!maxDate || maxLimit.isBefore(maxDate)) {
-                    maxDate = maxLimit;
-                }
+        function init() {
+            me.$el = $(element);
+            if (me.$el.length) {
+                me._init(me.$el[0], options);
             }
+            else if (isString(element)) {
+                preinitialized[element] = options;
+            }
+        }
+    }
 
-            for (var row = 0; row < 6; row++) {
-                html += '<tr>';
-
-                // add week number
-                if (this.showWeekNumbers)
-                    html += '<td class="week">' + calendar[row][0].week() + '</td>';
-                else if (this.showISOWeekNumbers)
-                    html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>';
+    Validator.prototype = {
+        _init: function(element, options) {
+            var me = this,
+                opt, themeOpt, dataOpt;
 
-                for (var col = 0; col < 7; col++) {
+            // Initialization options
+            if ( isFunction(options) ) {
+                options = {
+                    valid: options
+                };
+            }
+            options = me._opt = options || {};
+            dataOpt = attr(element, 'data-'+ NS +'-option');
+            dataOpt = me._dataOpt = dataOpt && dataOpt.charAt(0) === '{' ? (new Function("return " + dataOpt))() : {};
+            themeOpt = me._themeOpt = themes[ options.theme || dataOpt.theme || defaults.theme ];
+            opt = me.options = $.extend({}, defaults, fieldDefaults, themeOpt, me.options, options, dataOpt);
 
-                    var classes = [];
+            me.rules = new Rules(opt.rules, true);
+            me.messages = new Messages(opt.messages, true);
+            me.Field = _createFieldFactory(me);
+            me.elements = me.elements || {};
+            me.deferred = {};
+            me.errors = {};
+            me.fields = {};
+            // Initialization fields
+            me._initFields(opt.fields);
 
-                    //highlight today's date
-                    if (calendar[row][col].isSame(new Date(), "day"))
-                        classes.push('today');
-
-                    //highlight weekends
-                    if (calendar[row][col].isoWeekday() > 5)
-                        classes.push('weekend');
-
-                    //grey out the dates in other months displayed at beginning and end of this calendar
-                    if (calendar[row][col].month() != calendar[1][1].month())
-                        classes.push('off');
-
-                    //don't allow selection of dates before the minimum date
-                    if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))
-                        classes.push('off', 'disabled');
-
-                    //don't allow selection of dates after the maximum date
-                    if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))
-                        classes.push('off', 'disabled');
-
-                    //don't allow selection of date if a custom function decides it's invalid
-                    if (this.isInvalidDate(calendar[row][col]))
-                        classes.push('off', 'disabled');
-
-                    //highlight the currently selected start date
-                    if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))
-                        classes.push('active', 'start-date');
-
-                    //highlight the currently selected end date
-                    if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))
-                        classes.push('active', 'end-date');
-
-                    //highlight dates in-between the selected dates
-                    if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)
-                        classes.push('in-range');
-
-                    //apply custom classes for this date
-                    var isCustom = this.isCustomDate(calendar[row][col]);
-                    if (isCustom !== false) {
-                        if (typeof isCustom === 'string')
-                            classes.push(isCustom);
-                        else
-                            Array.prototype.push.apply(classes, isCustom);
-                    }
-
-                    var cname = '', disabled = false;
-                    for (var i = 0; i < classes.length; i++) {
-                        cname += classes[i] + ' ';
-                        if (classes[i] == 'disabled')
-                            disabled = true;
-                    }
-                    if (!disabled)
-                        cname += 'available';
-
-                    html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>';
+            // Initialization events and make a cache
+            if ( !me.$el.data(NS) ) {
+                me.$el.data(NS, me).addClass(CLS_WRAPPER +' '+ opt.formClass)
+                    .on('form-submit-validate', function(e, a, $form, opts, veto) {
+                        me.vetoed = veto.veto = !me.isValid;
+                        me.ajaxFormOptions = opts;
+                    })
+                    .on('submit'+ CLS_NS +' validate'+ CLS_NS, proxy(me, '_submit'))
+                    .on('reset'+ CLS_NS, proxy(me, '_reset'))
+                    .on('showmsg'+ CLS_NS, proxy(me, '_showmsg'))
+                    .on('hidemsg'+ CLS_NS, proxy(me, '_hidemsg'))
+                    .on('focusin'+ CLS_NS + ' click'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusin'))
+                    .on('focusout'+ CLS_NS +' validate'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusout'))
+                    .on('keyup'+ CLS_NS +' input'+ CLS_NS + ' compositionstart compositionend', INPUT_SELECTOR, proxy(me, '_focusout'))
+                    .on('click'+ CLS_NS, ':radio,:checkbox', 'click', proxy(me, '_focusout'))
+                    .on('change'+ CLS_NS, 'select,input[type="file"]', 'change', proxy(me, '_focusout'));
 
-                }
-                html += '</tr>';
+                // cache the novalidate attribute value
+                me._NOVALIDATE = attr(element, NOVALIDATE);
+                // Initialization is complete, stop off default HTML5 form validation
+                // If use "jQuery.attr('novalidate')" in IE7 will complain: "SCRIPT3: Member not found."
+                attr(element, NOVALIDATE, NOVALIDATE);
             }
 
-            html += '</tbody>';
-            html += '</table>';
-
-            this.container.find('.calendar.' + side + ' .calendar-table').html(html);
-
-        },
-
-        renderTimePicker: function(side) {
-
-            // Don't bother updating the time picker if it's currently disabled
-            // because an end date hasn't been clicked yet
-            if (side == 'right' && !this.endDate) return;
-
-            var html, selected, minDate, maxDate = this.maxDate;
-
-            if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))
-                maxDate = this.startDate.clone().add(this.dateLimit);
-
-            if (side == 'left') {
-                selected = this.startDate.clone();
-                minDate = this.minDate;
-            } else if (side == 'right') {
-                selected = this.endDate.clone();
-                minDate = this.startDate;
-
-                //Preserve the time already selected
-                var timeSelector = this.container.find('.calendar.right .calendar-time div');
-                if (timeSelector.html() != '') {
-
-                    selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());
-                    selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());
-                    selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());
-
-                    if (!this.timePicker24Hour) {
-                        var ampm = timeSelector.find('.ampmselect option:selected').val();
-                        if (ampm === 'PM' && selected.hour() < 12)
-                            selected.hour(selected.hour() + 12);
-                        if (ampm === 'AM' && selected.hour() === 12)
-                            selected.hour(0);
-                    }
-
-                }
-
-                if (selected.isBefore(this.startDate))
-                    selected = this.startDate.clone();
-
-                if (maxDate && selected.isAfter(maxDate))
-                    selected = maxDate.clone();
-
+            // Display all messages in target container
+            if ( isString(opt.target) ) {
+                me.$el.find(opt.target).addClass('msg-container');
             }
+        },
 
-            //
-            // hours
-            //
-
-            html = '<select class="hourselect">';
-
-            var start = this.timePicker24Hour ? 0 : 1;
-            var end = this.timePicker24Hour ? 23 : 12;
-
-            for (var i = start; i <= end; i++) {
-                var i_in_24 = i;
-                if (!this.timePicker24Hour)
-                    i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i);
-
-                var time = selected.clone().hour(i_in_24);
-                var disabled = false;
-                if (minDate && time.minute(59).isBefore(minDate))
-                    disabled = true;
-                if (maxDate && time.minute(0).isAfter(maxDate))
-                    disabled = true;
+        // Guess whether the form use ajax submit
+        _guessAjax: function(form) {
+            var me = this;
 
-                if (i_in_24 == selected.hour() && !disabled) {
-                    html += '<option value="' + i + '" selected="selected">' + i + '</option>';
-                } else if (disabled) {
-                    html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>';
-                } else {
-                    html += '<option value="' + i + '">' + i + '</option>';
-                }
+            if ( !(me.isAjaxSubmit = !!me.options.valid) ) {
+                // if there is a "valid.form" event
+                var events = ($._data || $.data)(form, "events");
+                me.isAjaxSubmit = issetEvent(events, 'valid', 'form') || issetEvent(events, 'submit', 'form-plugin');
             }
 
-            html += '</select> ';
-
-            //
-            // minutes
-            //
-
-            html += ': <select class="minuteselect">';
-
-            for (var i = 0; i < 60; i += this.timePickerIncrement) {
-                var padded = i < 10 ? '0' + i : i;
-                var time = selected.clone().minute(i);
-
-                var disabled = false;
-                if (minDate && time.second(59).isBefore(minDate))
-                    disabled = true;
-                if (maxDate && time.second(0).isAfter(maxDate))
-                    disabled = true;
-
-                if (selected.minute() == i && !disabled) {
-                    html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
-                } else if (disabled) {
-                    html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
-                } else {
-                    html += '<option value="' + i + '">' + padded + '</option>';
+            function issetEvent(events, name, namespace) {
+                if ( events && events[name] &&
+                     $.map(events[name], function(e){
+                        return ~e.namespace.indexOf(namespace) ? 1 : null;
+                     }).length
+                ) {
+                    return true;
                 }
+                return false;
             }
+        },
 
-            html += '</select> ';
-
-            //
-            // seconds
-            //
-
-            if (this.timePickerSeconds) {
-                html += ': <select class="secondselect">';
-
-                for (var i = 0; i < 60; i++) {
-                    var padded = i < 10 ? '0' + i : i;
-                    var time = selected.clone().second(i);
+        _initFields: function(fields) {
+            var me = this, k, arr, i,
+                clear = fields === null;
 
-                    var disabled = false;
-                    if (minDate && time.isBefore(minDate))
-                        disabled = true;
-                    if (maxDate && time.isAfter(maxDate))
-                        disabled = true;
+            // Processing field information
+            if (clear) fields = me.fields;
 
-                    if (selected.second() == i && !disabled) {
-                        html += '<option value="' + i + '" selected="selected">' + padded + '</option>';
-                    } else if (disabled) {
-                        html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>';
+            if ( isObject(fields) ) {
+                for (k in fields) {
+                    if (~k.indexOf(',')) {
+                        arr = k.split(',');
+                        i = arr.length;
+                        while (i--) {
+                            initField(trim(arr[i]), fields[k]);
+                        }
                     } else {
-                        html += '<option value="' + i + '">' + padded + '</option>';
+                        initField(k, fields[k]);
                     }
                 }
-
-                html += '</select> ';
             }
 
-            //
-            // AM/PM
-            //
-
-            if (!this.timePicker24Hour) {
-                html += '<select class="ampmselect">';
-
-                var am_html = '';
-                var pm_html = '';
-
-                if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate))
-                    am_html = ' disabled="disabled" class="disabled"';
-
-                if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate))
-                    pm_html = ' disabled="disabled" class="disabled"';
+            // Parsing DOM rules
+            me.$el.find(INPUT_SELECTOR).each(function() {
+                me._parse(this);
+            });
 
-                if (selected.hour() >= 12) {
-                    html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>';
+            function initField(k, v) {
+                // delete a field from settings
+                if ( v === null || clear ) {
+                    var el = me.elements[k];
+                    if (el) me._resetElement(el, true);
+                    delete me.fields[k];
                 } else {
-                    html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>';
+                    me.fields[k] = new me.Field(k, isString(v) ? {rule: v} : v, me.fields[k]);
                 }
-
-                html += '</select>';
             }
-
-            this.container.find('.calendar.' + side + ' .calendar-time div').html(html);
-
         },
 
-        updateFormInputs: function() {
-
-            //ignore mouse movements while an above-calendar text input has focus
-            if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
-                return;
+        // Parsing a field
+        _parse: function(el) {
+            var me = this,
+                field,
+                key = el.name,
+                display,
+                timely,
+                dataRule = attr(el, DATA_RULE);
 
-            this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));
-            if (this.endDate)
-                this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));
+            dataRule && attr(el, DATA_RULE, null);
 
-            if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {
-                this.container.find('button.applyBtn').removeAttr('disabled');
-            } else {
-                this.container.find('button.applyBtn').attr('disabled', 'disabled');
+            // If the field has passed the key as id mode, or it doesn't has a name
+            if ( el.id && (
+                ('#' + el.id in me.fields) ||
+                !key ||
+                // If dataRule and element are diffrent from old's, we use ID mode.
+                (dataRule !== null && (field = me.fields[key]) && dataRule !== field.rule && el.id !== field.key)
+                )
+            ) {
+                key = '#' + el.id;
+            }
+            // Generate id
+            if (!key) {
+                key = '#' + (el.id = 'N' + String(Math.random()).slice(-12));
             }
 
-        },
+            field = me.getField(key, true);
+            // The priority of passing parameter by DOM is higher than by JS.
+            field.rule = dataRule || field.rule;
 
-        move: function() {
-            var parentOffset = { top: 0, left: 0 },
-                containerTop;
-            var parentRightEdge = $(window).width();
-            if (!this.parentEl.is('body')) {
-                parentOffset = {
-                    top: this.parentEl.offset().top - this.parentEl.scrollTop(),
-                    left: this.parentEl.offset().left - this.parentEl.scrollLeft()
-                };
-                parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;
+            if (display = attr(el, DATA_DISPLAY)) {
+                field.display = display;
             }
-
-            if (this.drops == 'up')
-                containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;
-            else
-                containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;
-            this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');
-
-            if (this.opens == 'left') {
-                this.container.css({
-                    top: containerTop,
-                    right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),
-                    left: 'auto'
-                });
-                if (this.container.offset().left < 0) {
-                    this.container.css({
-                        right: 'auto',
-                        left: 9
-                    });
+            if (field.rule) {
+                if ( attr(el, DATA_MUST) !== null || /\b(?:match|checked)\b/.test(field.rule) ) {
+                    field.must = true;
                 }
-            } else if (this.opens == 'center') {
-                this.container.css({
-                    top: containerTop,
-                    left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2
-                            - this.container.outerWidth() / 2,
-                    right: 'auto'
-                });
-                if (this.container.offset().left < 0) {
-                    this.container.css({
-                        right: 'auto',
-                        left: 9
-                    });
+                if ( /\brequired\b/.test(field.rule) ) {
+                    field.required = true;
                 }
-            } else {
-                this.container.css({
-                    top: containerTop,
-                    left: this.element.offset().left - parentOffset.left,
-                    right: 'auto'
-                });
-                if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {
-                    this.container.css({
-                        left: 'auto',
-                        right: 0
-                    });
+                if (timely = attr(el, DATA_TIMELY)) {
+                    field.timely = +timely;
+                } else if (field.timely > 3) {
+                    attr(el, DATA_TIMELY, field.timely);
                 }
+                me._parseRule(field);
+                field.old = {};
             }
-        },
-
-        show: function(e) {
-            if (this.isShowing) return;
-
-            // Create a click proxy that is private to this instance of datepicker, for unbinding
-            this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);
-
-            // Bind global datepicker mousedown for hiding and
-            $(document)
-              .on('mousedown.daterangepicker', this._outsideClickProxy)
-              // also support mobile devices
-              .on('touchend.daterangepicker', this._outsideClickProxy)
-              // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them
-              .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)
-              // and also close when focus changes to outside the picker (eg. tabbing between controls)
-              .on('focusin.daterangepicker', this._outsideClickProxy);
-
-            // Reposition the picker if the window is resized while it's open
-            $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));
-
-            this.oldStartDate = this.startDate.clone();
-            this.oldEndDate = this.endDate.clone();
-            this.previousRightTime = this.endDate.clone();
-
-            this.updateView();
-            this.container.show();
-            this.move();
-            this.element.trigger('show.daterangepicker', this);
-            this.isShowing = true;
-        },
-
-        hide: function(e) {
-            if (!this.isShowing) return;
-
-            //incomplete date selection, revert to last values
-            if (!this.endDate) {
-                this.startDate = this.oldStartDate.clone();
-                this.endDate = this.oldEndDate.clone();
+            if ( isString(field.target) ) {
+                attr(el, DATA_TARGET, field.target);
             }
-
-            //if a new date range was selected, invoke the user callback function
-            if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
-                this.callback(this.startDate, this.endDate, this.chosenLabel);
-
-            //if picker is attached to a text input, update it
-            this.updateElement();
-
-            $(document).off('.daterangepicker');
-            $(window).off('.daterangepicker');
-            this.container.hide();
-            this.element.trigger('hide.daterangepicker', this);
-            this.isShowing = false;
-        },
-
-        toggle: function(e) {
-            if (this.isShowing) {
-                this.hide();
-            } else {
-                this.show();
+            if ( isString(field.tip) ) {
+                attr(el, DATA_TIP, field.tip);
             }
-        },
 
-        outsideClick: function(e) {
-            var target = $(e.target);
-            // if the page is clicked anywhere except within the daterangerpicker/button
-            // itself then call this.hide()
-            if (
-                // ie modal dialog fix
-                e.type == "focusin" ||
-                target.closest(this.element).length ||
-                target.closest(this.container).length ||
-                target.closest('.calendar-table').length
-                ) return;
-            this.hide();
-            this.element.trigger('outsideClick.daterangepicker', this);
+            return me.fields[key] = field;
         },
 
-        showCalendars: function() {
-            this.container.addClass('show-calendar');
-            this.move();
-            this.element.trigger('showCalendar.daterangepicker', this);
-        },
+        // Parsing field rules
+        _parseRule: function(field) {
+            var arr = rDisplay.exec(field.rule);
 
-        hideCalendars: function() {
-            this.container.removeClass('show-calendar');
-            this.element.trigger('hideCalendar.daterangepicker', this);
+            if (!arr) return;
+            // current rule index
+            field._i = 0;
+            if (arr[1]) {
+                field.display = arr[1];
+            }
+            if (arr[2]) {
+                field._rules = [];
+                arr[2].replace(rRules, function(){
+                    var args = arguments;
+                    args[4] = args[4] || args[5];
+                    field._rules.push({
+                        and: args[1] === "&",
+                        not: args[2] === "!",
+                        or: args[6] === "|",
+                        method: args[3],
+                        params: args[4] ? $.map( args[4].split(', '), trim ) : undefined
+                    });
+                });
+            }
         },
 
-        hoverRange: function(e) {
-
-            //ignore mouse movements while an above-calendar text input has focus
-            if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
-                return;
+        // Verify a zone
+        _multiValidate: function($inputs, doneCallback){
+            var me = this,
+                opt = me.options;
 
-            var label = e.target.getAttribute('data-range-key');
+            me.hasError = false;
 
-            if (label == this.locale.customRangeLabel) {
-                this.updateView();
-            } else {
-                var dates = this.ranges[label];
-                this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));
-                this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));
+            if (opt.ignore) {
+                $inputs = $inputs.not(opt.ignore);
             }
 
-        },
-
-        clickRange: function(e) {
-            var label = e.target.getAttribute('data-range-key');
-            this.chosenLabel = label;
-            if (label == this.locale.customRangeLabel) {
-                this.showCalendars();
-            } else {
-                var dates = this.ranges[label];
-                this.startDate = dates[0];
-                this.endDate = dates[1];
-
-                if (!this.timePicker) {
-                    this.startDate.startOf('day');
-                    this.endDate.endOf('day');
+            $inputs.each(function() {
+                me._validate(this);
+                if (me.hasError && opt.stopOnError) {
+                    // stop the validation
+                    return false;
                 }
+            });
 
-                if (!this.alwaysShowCalendars)
-                    this.hideCalendars();
-                this.clickApply();
-            }
-        },
-
-        clickPrev: function(e) {
-            var cal = $(e.target).parents('.calendar');
-            if (cal.hasClass('left')) {
-                this.leftCalendar.month.subtract(1, 'month');
-                if (this.linkedCalendars)
-                    this.rightCalendar.month.subtract(1, 'month');
-            } else {
-                this.rightCalendar.month.subtract(1, 'month');
+            // Need to wait for all fields validation complete, especially asynchronous validation
+            if (doneCallback) {
+                me.validating = true;
+                $.when.apply(
+                    null,
+                    $.map(me.deferred, function(v){return v;})
+                ).done(function(){
+                    doneCallback.call(me, !me.hasError);
+                    me.validating = false;
+                });
             }
-            this.updateCalendars();
-        },
 
-        clickNext: function(e) {
-            var cal = $(e.target).parents('.calendar');
-            if (cal.hasClass('left')) {
-                this.leftCalendar.month.add(1, 'month');
-            } else {
-                this.rightCalendar.month.add(1, 'month');
-                if (this.linkedCalendars)
-                    this.leftCalendar.month.add(1, 'month');
-            }
-            this.updateCalendars();
+            // If the form does not contain asynchronous validation, the return value is correct.
+            // Otherwise, you should detect form validation result through "doneCallback".
+            return !$.isEmptyObject(me.deferred) ? undefined : !me.hasError;
         },
 
-        hoverDate: function(e) {
-
-            //ignore mouse movements while an above-calendar text input has focus
-            //if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus"))
-            //    return;
-
-            //ignore dates that can't be selected
-            if (!$(e.target).hasClass('available')) return;
+        // Validate the whole form
+        _submit: function(e) {
+            var me = this,
+                opt = me.options,
+                form = e.target,
+                canSubmit = e.type === 'submit' && form.tagName === 'FORM' && !e.isDefaultPrevented();
 
-            //have the text inputs above calendars reflect the date being hovered over
-            var title = $(e.target).attr('data-title');
-            var row = title.substr(1, 1);
-            var col = title.substr(3, 1);
-            var cal = $(e.target).parents('.calendar');
-            var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
+            e.preventDefault();
 
-            if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(":focus")) {
-                this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));
-            } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(":focus")) {
-                this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));
+            if (
+                novalidateonce && ~(novalidateonce = false) ||
+                // Prevent duplicate submission
+                me.submiting ||
+                // Receive the "validate" event only from the form.
+                e.type === 'validate' && me.$el[0] !== form ||
+                // trigger the beforeSubmit callback.
+                isFunction(opt.beforeSubmit) && opt.beforeSubmit.call(me, form) === false
+            ) {
+                return;
             }
 
-            //highlight the dates between the start date and the date being hovered as a potential end date
-            var leftCalendar = this.leftCalendar;
-            var rightCalendar = this.rightCalendar;
-            var startDate = this.startDate;
-            if (!this.endDate) {
-                this.container.find('.calendar tbody td').each(function(index, el) {
-
-                    //skip week numbers, only look at dates
-                    if ($(el).hasClass('week')) return;
-
-                    var title = $(el).attr('data-title');
-                    var row = title.substr(1, 1);
-                    var col = title.substr(3, 1);
-                    var cal = $(el).parents('.calendar');
-                    var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];
+            if (me.isAjaxSubmit === undefined) {
+                me._guessAjax(form);
+            }
 
-                    if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {
-                        $(el).addClass('in-range');
-                    } else {
-                        $(el).removeClass('in-range');
-                    }
+            me._debug('log', '\n<<< event: ' + e.type);
 
-                });
-            }
+            me._reset();
+            me.submiting = true;
 
-        },
+            me._multiValidate(
+                me.$el.find(INPUT_SELECTOR),
+                function(isValid){
+                    var ret = (isValid || opt.debug === 2) ? 'valid' : 'invalid',
+                        errors;
 
-        clickDate: function(e) {
-
-            if (!$(e.target).hasClass('available')) return;
-
-            var title = $(e.target).attr('data-title');
-            var row = title.substr(1, 1);
-            var col = title.substr(3, 1);
-            var cal = $(e.target).parents('.calendar');
-            var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];
-
-            //
-            // this function needs to do a few things:
-            // * alternate between selecting a start and end date for the range,
-            // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date
-            // * if autoapply is enabled, and an end date was chosen, apply the selection
-            // * if single date picker mode, and time picker isn't enabled, apply the selection immediately
-            // * if one of the inputs above the calendars was focused, cancel that manual input
-            //
-
-            if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start
-                if (this.timePicker) {
-                    var hour = parseInt(this.container.find('.left .hourselect').val(), 10);
-                    if (!this.timePicker24Hour) {
-                        var ampm = this.container.find('.left .ampmselect').val();
-                        if (ampm === 'PM' && hour < 12)
-                            hour += 12;
-                        if (ampm === 'AM' && hour === 12)
-                            hour = 0;
-                    }
-                    var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);
-                    var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;
-                    date = date.clone().hour(hour).minute(minute).second(second);
-                }
-                this.endDate = null;
-                this.setStartDate(date.clone());
-            } else if (!this.endDate && date.isBefore(this.startDate)) {
-                //special case: clicking the same date for start/end,
-                //but the time of the end date is before the start date
-                this.setEndDate(this.startDate.clone());
-            } else { // picking end
-                if (this.timePicker) {
-                    var hour = parseInt(this.container.find('.right .hourselect').val(), 10);
-                    if (!this.timePicker24Hour) {
-                        var ampm = this.container.find('.right .ampmselect').val();
-                        if (ampm === 'PM' && hour < 12)
-                            hour += 12;
-                        if (ampm === 'AM' && hour === 12)
-                            hour = 0;
+                    if (!isValid) {
+                        if (opt.focusInvalid) {
+                            // navigate to the error element
+                            me.$el.find('[' + ARIA_INVALID + ']:first').focus();
+                        }
+                        errors = $.map(me.errors, function(err){return err;});
                     }
-                    var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
-                    var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
-                    date = date.clone().hour(hour).minute(minute).second(second);
-                }
-                this.setEndDate(date.clone());
-                if (this.autoApply) {
-                  this.calculateChosenLabel();
-                  this.clickApply();
-                }
-            }
-
-            if (this.singleDatePicker) {
-                this.setEndDate(this.startDate);
-                if (!this.timePicker)
-                    this.clickApply();
-            }
 
-            this.updateView();
+                    // releasing submit
+                    me.submiting = false;
+                    me.isValid = isValid;
 
-            //This is to cancel the blur event handler if the mouse was in one of the inputs
-            e.stopPropagation();
+                    // trigger callback and event
+                    isFunction(opt[ret]) && opt[ret].call(me, form, errors);
+                    me.$el.trigger(ret + CLS_NS_FORM, [form, errors]);
 
-        },
+                    me._debug('log', '>>> ' + ret);
 
-        calculateChosenLabel: function () {
-            var customRange = true;
-            var i = 0;
-            for (var range in this.ranges) {
-              if (this.timePicker) {
-                    var format = this.timePickerSeconds ? "YYYY-MM-DD hh:mm:ss" : "YYYY-MM-DD hh:mm";
-                    //ignore times when comparing dates if time picker seconds is not enabled
-                    if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) {
-                        customRange = false;
-                        this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();
-                        break;
+                    if (!isValid) return;
+                    // For jquery.form plugin
+                    if (me.vetoed) {
+                        $(form).ajaxSubmit(me.ajaxFormOptions);
                     }
-                } else {
-                    //ignore times when comparing dates if time picker is not enabled
-                    if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {
-                        customRange = false;
-                        this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();
-                        break;
+                    else if (canSubmit && !me.isAjaxSubmit) {
+                        document.createElement('form').submit.call(form);
                     }
                 }
-                i++;
-            }
-            if (customRange) {
-                if (this.showCustomRangeLabel) {
-                    this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();
-                } else {
-                    this.chosenLabel = null;
-                }
-                this.showCalendars();
-            }
+            );
         },
 
-        clickApply: function(e) {
-            this.hide();
-            this.element.trigger('apply.daterangepicker', this);
-        },
+        _reset: function(e) {
+            var me = this;
 
-        clickCancel: function(e) {
-            this.startDate = this.oldStartDate;
-            this.endDate = this.oldEndDate;
-            this.hide();
-            this.element.trigger('cancel.daterangepicker', this);
+            me.errors = {};
+            if (e) {
+                me.reseting = true;
+                me.$el.find(INPUT_SELECTOR).each( function(){
+                    me._resetElement(this);
+                });
+                delete me.reseting;
+            }
         },
 
-        monthOrYearChanged: function(e) {
-            var isLeft = $(e.target).closest('.calendar').hasClass('left'),
-                leftOrRight = isLeft ? 'left' : 'right',
-                cal = this.container.find('.calendar.'+leftOrRight);
+        _resetElement: function(el, all) {
+            this._setClass(el, null);
+            this.hideMsg(el);
+        },
 
-            // Month must be Number for new moment versions
-            var month = parseInt(cal.find('.monthselect').val(), 10);
-            var year = cal.find('.yearselect').val();
+        // Handle events: "focusin/click"
+        _focusin: function(e) {
+            var me = this,
+                opt = me.options,
+                el = e.target,
+                timely,
+                msg;
 
-            if (!isLeft) {
-                if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {
-                    month = this.startDate.month();
-                    year = this.startDate.year();
-                }
+            if ( me.validating || ( e.type==='click' && document.activeElement === el ) ) {
+                return;
             }
 
-            if (this.minDate) {
-                if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {
-                    month = this.minDate.month();
-                    year = this.minDate.year();
+            if (opt.focusCleanup) {
+                if ( attr(el, ARIA_INVALID) === 'true' ) {
+                    me._setClass(el, null);
+                    me.hideMsg(el);
                 }
             }
 
-            if (this.maxDate) {
-                if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {
-                    month = this.maxDate.month();
-                    year = this.maxDate.year();
-                }
-            }
+            msg = attr(el, DATA_TIP);
 
-            if (isLeft) {
-                this.leftCalendar.month.month(month).year(year);
-                if (this.linkedCalendars)
-                    this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');
+            if (msg) {
+                me.showMsg(el, {
+                    type: 'tip',
+                    msg: msg
+                });
             } else {
-                this.rightCalendar.month.month(month).year(year);
-                if (this.linkedCalendars)
-                    this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');
+                if (attr(el, DATA_RULE)) {
+                    me._parse(el);
+                }
+                if (timely = attr(el, DATA_TIMELY)) {
+                    if ( timely === 8 || timely === 9 ) {
+                        me._focusout(e);
+                    }
+                }
             }
-            this.updateCalendars();
         },
 
-        timeChanged: function(e) {
-
-            var cal = $(e.target).closest('.calendar'),
-                isLeft = cal.hasClass('left');
-
-            var hour = parseInt(cal.find('.hourselect').val(), 10);
-            var minute = parseInt(cal.find('.minuteselect').val(), 10);
-            var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;
+        // Handle events: "focusout/validate/keyup/click/change/input/compositionstart/compositionend"
+        _focusout: function(e) {
+            var me = this,
+                opt = me.options,
+                el = e.target,
+                etype = e.type,
+                etype0,
+                focusin = etype === 'focusin',
+                special = etype === 'validate',
+                elem,
+                field,
+                old,
+                value,
+                timestamp,
+                key, specialKey,
+                timely,
+                timer = 0;
 
-            if (!this.timePicker24Hour) {
-                var ampm = cal.find('.ampmselect').val();
-                if (ampm === 'PM' && hour < 12)
-                    hour += 12;
-                if (ampm === 'AM' && hour === 12)
-                    hour = 0;
+            if (etype === 'compositionstart') {
+                me.pauseValidate = true;
             }
-
-            if (isLeft) {
-                var start = this.startDate.clone();
-                start.hour(hour);
-                start.minute(minute);
-                start.second(second);
-                this.setStartDate(start);
-                if (this.singleDatePicker) {
-                    this.endDate = this.startDate.clone();
-                } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {
-                    this.setEndDate(start.clone());
-                }
-            } else if (this.endDate) {
-                var end = this.endDate.clone();
-                end.hour(hour);
-                end.minute(minute);
-                end.second(second);
-                this.setEndDate(end);
+            if (etype === 'compositionend') {
+                me.pauseValidate = false;
+            }
+            if (me.pauseValidate) {
+                return;
             }
 
-            //update the calendars so all clickable dates reflect the new time component
-            this.updateCalendars();
-
-            //update the form inputs above the calendars with the new time
-            this.updateFormInputs();
-
-            //re-render the time pickers because changing one selection can affect what's enabled in another
-            this.renderTimePicker('left');
-            this.renderTimePicker('right');
-
-        },
-
-        formInputsChanged: function(e) {
-            var isRight = $(e.target).closest('.calendar').hasClass('right');
-            var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format);
-            var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format);
-
-            if (start.isValid() && end.isValid()) {
+            // For checkbox and radio
+            elem = el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]').get(0) : el;
+            // Get field
+            if (!(field = me.getField(elem)) || !field.rule) {
+                return;
+            }
+            // Cache event type
+            etype0 = field._e;
+            field._e = etype;
+            timely = field.timely;
 
-                if (isRight && end.isBefore(start))
-                    start = end.clone();
+            if (!special) {
+                if (!timely || (_checkable(el) && etype !== 'click')) {
+                    return;
+                }
 
-                this.setStartDate(start);
-                this.setEndDate(end);
+                value = field.getValue();
 
-                if (isRight) {
-                    this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format));
-                } else {
-                    this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format));
+                // not validate field unless fill a value
+                if ( field.ignoreBlank && !value && !focusin ) {
+                    me.hideMsg(el);
+                    return;
                 }
 
-            }
+                if ( etype === 'focusout' ) {
+                    if (etype0 === 'change') {
+                        return;
+                    }
+                    if ( timely === 2 || timely === 8 ) {
+                        old = field.old;
+                        if (value && old) {
+                            if (field.isValid && !old.showOk) {
+                                me.hideMsg(el);
+                            } else {
+                                me._makeMsg(el, field, old);
+                            }
+                        } else {
+                            return;
+                        }
+                    }
+                }
+                else {
+                    if ( timely < 2 && !e.data ) {
+                        return;
+                    }
 
-            this.updateView();
-        },
+                    // mark timestamp to reduce the frequency of the received event
+                    timestamp = +new Date();
+                    if ( timestamp - (el._ts || 0) < 100 ) {
+                        return;
+                    }
+                    el._ts = timestamp;
 
-        formInputsFocused: function(e) {
+                    // handle keyup
+                    if ( etype === 'keyup' ) {
+                        if (etype0 === 'input') {
+                            return;
+                        }
+                        key = e.keyCode;
+                        specialKey = {
+                            8: 1,  // Backspace
+                            9: 1,  // Tab
+                            16: 1, // Shift
+                            32: 1, // Space
+                            46: 1  // Delete
+                        };
 
-            // Highlight the focused input
-            this.container.find('input[name="daterangepicker_start"], input[name="daterangepicker_end"]').removeClass('active');
-            $(e.target).addClass('active');
+                        // only gets focus, no validation
+                        if ( key === 9 && !value ) {
+                            return;
+                        }
 
-            // Set the state such that if the user goes back to using a mouse, 
-            // the calendars are aware we're selecting the end of the range, not
-            // the start. This allows someone to edit the end of a date range without
-            // re-selecting the beginning, by clicking on the end date input then
-            // using the calendar.
-            var isRight = $(e.target).closest('.calendar').hasClass('right');
-            if (isRight) {
-                this.endDate = null;
-                this.setStartDate(this.startDate.clone());
-                this.updateView();
+                        // do not validate, if triggered by these keys
+                        if ( key < 48 && !specialKey[key] ) {
+                            return;
+                        }
+                    }
+                    if ( !focusin ) {
+                        // keyboard events, reducing the frequency of validation
+                        timer = timely <100 ?  (etype === 'click' || el.tagName === 'SELECT') ? 0 : 400 : timely;
+                    }
+                }
             }
 
-        },
-
-        formInputsBlurred: function(e) {
-
-            // this function has one purpose right now: if you tab from the first
-            // text input to the second in the UI, the endDate is nulled so that
-            // you can click another, but if you tab out without clicking anything
-            // or changing the input value, the old endDate should be retained
-
-            if (!this.endDate) {
-                var val = this.container.find('input[name="daterangepicker_end"]').val();
-                var end = moment(val, this.locale.format);
-                if (end.isValid()) {
-                    this.setEndDate(end);
-                    this.updateView();
-                }
+            // if the current field is ignored
+            if ( opt.ignore && $(el).is(opt.ignore) ) {
+                return;
             }
 
-        },
+            clearTimeout(field._t);
 
-        formInputsKeydown: function(e) {
-            // This function ensures that if the 'enter' key was pressed in the input, then the calendars
-            // are updated with the startDate and endDate.
-            // This behaviour is automatic in Chrome/Firefox/Edge but not in IE 11 hence why this exists.
-            // Other browsers and versions of IE are untested and the behaviour is unknown.
-            if (e.keyCode === 13) {
-                // Prevent the calendar from being updated twice on Chrome/Firefox/Edge
-                e.preventDefault(); 
-                this.formInputsChanged(e);
+            if (timer) {
+                field._t = setTimeout(function() {
+                    me._validate(el, field);
+                }, timer);
+            } else {
+                if (special) field.old = {};
+                me._validate(el, field);
             }
         },
 
-
-        elementChanged: function() {
-            if (!this.element.is('input')) return;
-            if (!this.element.val().length) return;
-
-            var dateString = this.element.val().split(this.locale.separator),
-                start = null,
-                end = null;
-
-            if (dateString.length === 2) {
-                start = moment(dateString[0], this.locale.format);
-                end = moment(dateString[1], this.locale.format);
+        _setClass: function(el, isValid) {
+            var $el = $(el), opt = this.options;
+            if (opt.bindClassTo) {
+                $el = $el.closest(opt.bindClassTo);
             }
-
-            if (this.singleDatePicker || start === null || end === null) {
-                start = moment(this.element.val(), this.locale.format);
-                end = start;
+            $el.removeClass( opt.invalidClass + ' ' + opt.validClass );
+            if (isValid !== null) {
+                $el.addClass( isValid ? opt.validClass : opt.invalidClass );
             }
-
-            if (!start.isValid() || !end.isValid()) return;
-
-            this.setStartDate(start);
-            this.setEndDate(end);
-            this.updateView();
         },
 
-        keydown: function(e) {
-            //hide on tab or enter
-            if ((e.keyCode === 9) || (e.keyCode === 13)) {
-                this.hide();
-            }
-
-            //hide on esc and prevent propagation
-            if (e.keyCode === 27) {
-                e.preventDefault();
-                e.stopPropagation();
+        _showmsg: function(e, type, msg) {
+            var me = this,
+                el = e.target;
 
-                this.hide();
+            if ( me.$el.is(el) ) {
+                if (isObject(type)) {
+                    me.showMsg(type)
+                }
+                else if ( type === 'tip' ) {
+                    me.$el.find(INPUT_SELECTOR +"["+ DATA_TIP +"]", el).each(function(){
+                        me.showMsg(this, {type: type, msg: msg});
+                    });
+                }
+            }
+            else {
+                me.showMsg(el, {type: type, msg: msg});
             }
         },
 
-        updateElement: function() {
-            if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {
-                this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
-                this.element.trigger('change');
-            } else if (this.element.is('input') && this.autoUpdateInput) {
-                this.element.val(this.startDate.format(this.locale.format));
-                this.element.trigger('change');
+        _hidemsg: function(e) {
+            var $el = $(e.target);
+
+            if ( $el.is(INPUT_SELECTOR) ) {
+                this.hideMsg($el);
             }
         },
 
-        remove: function() {
-            this.container.remove();
-            this.element.off('.daterangepicker');
-            this.element.removeData();
-        }
+        // Validated a field
+        _validatedField: function(el, field, ret) {
+            var me = this,
+                opt = me.options,
+                isValid = field.isValid = ret.isValid = !!ret.isValid,
+                callback = isValid ? 'valid' : 'invalid';
 
-    };
+            ret.key = field.key;
+            ret.ruleName = field._r;
+            ret.id = el.id;
+            ret.value = field.value;
 
-    $.fn.daterangepicker = function(options, callback) {
-        var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options);
-        this.each(function() {
-            var el = $(this);
-            if (el.data('daterangepicker'))
-                el.data('daterangepicker').remove();
-            el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback));
-        });
-        return this;
-    };
+            me.elements[field.key] = ret.element = el;
+            me.isValid = me.$el[0].isValid = isValid ? me.isFormValid() : isValid;
 
-    return DateRangePicker;
+            if (isValid) {
+                ret.type = 'ok';
+            } else {
+                if (me.submiting) {
+                    me.errors[field.key] = ret.msg;
+                }
+                me.hasError = true;
+            }
 
-}));
+            // cache result
+            field.old = ret;
 
-/**
- * @author: pppscn <35696959@qq.com>
- * @version: v0.0.1
- *
- * @update 2017-05-07 <http://git.oschina.net/pp/fastadmin>
- * @update 2017-09-17 <http://git.oschina.net/karson/fastadmin>
- */
+            // trigger callback
+            isFunction(field[callback]) && field[callback].call(me, el, ret);
+            isFunction(opt.validation) && opt.validation.call(me, el, ret);
 
-!function ($) {
-    'use strict';
+            // trigger event
+            $(el).attr( ARIA_INVALID, isValid ? null : true )
+                 .trigger( callback + CLS_NS_FIELD, [ret, me] );
+            me.$el.triggerHandler('validation', [ret, me]);
 
-    var ColumnsForSearch = [];
+            if (me.checkOnly) return;
+            // set className
+            me._setClass(el, ret.skip || ret.type === 'tip' ? null : isValid);
+            me._makeMsg.apply(me, arguments);
+        },
 
-    var sprintf = $.fn.bootstrapTable.utils.sprintf;
+        _makeMsg: function(el, field, ret) {
+            // show or hide the message
+            if (field.msgMaker) {
+                ret = $.extend({}, ret);
+                if (field._e === 'focusin') {
+                    ret.type = 'tip';
+                }
+                this[ ret.showOk || ret.msg || ret.type === 'tip' ? 'showMsg' : 'hideMsg' ](el, ret, field);
+            }
+        },
 
-    var initCommonSearch = function (pColumns, that) {
-        var vFormCommon = createFormCommon(pColumns, that);
+        // Validated a rule
+        _validatedRule: function(el, field, ret, msgOpt) {
+            field = field || me.getField(el);
+            msgOpt = msgOpt || {};
 
-        var vModal = sprintf("<div class=\"commonsearch-table %s\">", that.options.searchFormVisible ? "" : "hidden");
-        vModal += vFormCommon.join('');
-        vModal += "</div>";
-        that.$container.prepend($(vModal));
-        that.$commonsearch = $(".commonsearch-table", that.$container);
-        var form = $("form.form-commonsearch", that.$commonsearch);
+            var me = this,
+                msg,
+                rule,
+                method = field._r,
+                timely = field.timely,
+                special = timely === 9 || timely === 8,
+                transfer,
+                temp,
+                isValid = false;
 
-        //绑定日期时间元素事件
-        if ($(".datetimepicker", form).size() > 0) {
-
-            require(['bootstrap-datetimepicker'], function () {
-                $('.datetimepicker', form).parent().css('position', 'relative');
-                $('.datetimepicker', form).datetimepicker({
-                    //format: 'YYYY-MM-DD',
-                    icons: {
-                        time: 'fa fa-clock-o',
-                        date: 'fa fa-calendar',
-                        up: 'fa fa-chevron-up',
-                        down: 'fa fa-chevron-down',
-                        previous: 'fa fa-chevron-left',
-                        next: 'fa fa-chevron-right',
-                        today: 'fa fa-history',
-                        clear: 'fa fa-trash',
-                        close: 'fa fa-remove'
-                    },
-                    showTodayButton: true,
-                    showClose: true
-                });
-            });
-        }
-        if ($(".datetimerange", form).size() > 0) {
-            var ranges = {};
-            ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')];
-            ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')];
-            ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')];
-            ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')];
-            ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')];
-            ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')];
-            var options = {
-                timePicker: false,
-                autoUpdateInput: false,
-                timePickerSeconds: true,
-                timePicker24Hour: true,
-                autoApply: true,
-                locale: {
-                    format: 'YYYY-MM-DD HH:mm:ss',
-                    customRangeLabel: __("Custom Range"),
-                    applyLabel: __("Apply"),
-                    cancelLabel: __("Clear"),
-                },
-                ranges: ranges,
-            };
-            var callback = function (start, end) {
-                $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format));
-            };
-            var column, index;
-            require(['bootstrap-daterangepicker'], function () {
-                $(".datetimerange", form).each(function () {
-                    $(this).on('apply.daterangepicker', function (ev, picker) {
-                        callback.call(picker, picker.startDate, picker.endDate);
-                    });
-                    $(this).on('cancel.daterangepicker', function (ev, picker) {
-                        $(this).val('');
-                    });
-                    index = $(this).data("index");
-                    column = pColumns[index];
-                    $(this).daterangepicker($.extend({}, options, column.options || {}), callback);
-                });
-            });
-        }
+            // use null to break validation from a field
+            if (ret === null) {
+                me._validatedField(el, field, {isValid: true, skip: true});
+                field._i = 0;
+                return;
+            }
+            else if (ret === undefined) {
+                transfer = true;
+            }
+            else if (ret === true || ret === '') {
+                isValid = true;
+            }
+            else if (isString(ret)) {
+                msg = ret;
+            }
+            else if (isObject(ret)) {
+                if (ret.error) {
+                    msg = ret.error;
+                } else {
+                    msg = ret.ok;
+                    isValid = true;
+                }
+            }
+            else {
+                isValid = !!ret
+            }
 
-        // 表单提交
-        form.on("submit", function (event) {
-            event.preventDefault();
-            that.onCommonSearch();
-            return false;
-        });
+            rule = field._rules[field._i];
+            if (rule.not) {
+                msg = undefined;
+                isValid = method === "required" || !isValid;
+            }
+            if (rule.or) {
+                if (isValid) {
+                    while ( field._i < field._rules.length && field._rules[field._i].or ) {
+                        field._i++;
+                    }
+                } else {
+                    transfer = true;
+                }
+            }
+            else if (rule.and) {
+                if (!field.isValid) transfer = true;
+            }
 
-        // 重置搜索
-        form.on("click", "button[type=reset]", function (event) {
-            form[0].reset();
-            that.onCommonSearch();
-        });
+            if (transfer) {
+                isValid = true;
+            }
+            // message analysis, and throw rule level event
+            else {
+                if (isValid) {
+                    if (field.showOk !== false) {
+                        temp = attr(el, DATA_OK);
+                        msg = temp === null ? isString(field.ok) ? field.ok : msg : temp;
+                        if (!isString(msg) && isString(field.showOk)) {
+                            msg = field.showOk;
+                        }
+                        if (isString(msg)) {
+                            msgOpt.showOk = isValid;
+                        }
+                    }
+                }
+                if (!isValid || special) {
+                    /* rule message priority:
+                        1. custom DOM message
+                        2. custom field message;
+                        3. global defined message;
+                        4. rule returned message;
+                        5. default message;
+                    */
+                    msg = (_getDataMsg(el, field, msg || rule.msg || me.messages[method]) || me.messages.fallback).replace(/\{0\|?([^\}]*)\}/, function(m, defaultDisplay){
+                        return me._getDisplay(el, field.display) || defaultDisplay || me.messages[0];
+                    });
+                }
+                if (!isValid) field.isValid = isValid;
+                msgOpt.msg = msg;
+                $(el).trigger( (isValid ? 'valid' : 'invalid') + CLS_NS_RULE, [method, msg]);
+            }
 
-    };
+            if (special && (!transfer || rule.and)) {
+                if (!isValid && !field._m) field._m = msg;
+                field._v = field._v || [];
+                field._v.push({
+                    type: isValid ? !transfer ? 'ok' : 'tip' : 'error',
+                    msg: msg || rule.msg
+                });
+            }
 
-    var createFormCommon = function (pColumns, that) {
-        var htmlForm = [];
-        var opList = ['=', '>', '>=', '<', '<=', '!=', 'FIND_IN_SET', 'LIKE', 'LIKE %...%', 'NOT LIKE', 'IN', 'NOT IN', 'IN(...)', 'NOT IN(...)', 'BETWEEN', 'NOT BETWEEN', 'RANGE', 'NOT RANGE', 'IS NULL', 'IS NOT NULL'];
-        htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" action="%s" >', that.options.actionForm));
-        htmlForm.push('<fieldset>');
-        if (that.options.titleForm.length > 0)
-            htmlForm.push(sprintf("<legend>%s</legend>", that.options.titleForm));
-        htmlForm.push('<div class="row">');
-        for (var i in pColumns) {
-            var vObjCol = pColumns[i];
-            if (!vObjCol.checkbox && vObjCol.field !== 'operate' && vObjCol.searchable && vObjCol.operate !== false) {
-                var query = Backend.api.query(vObjCol.field);
-                query = query ? query : '';
-                vObjCol.defaultValue = that.options.renderDefault && query != '' ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue);
-                ColumnsForSearch.push(vObjCol);
+            me._debug('log', '   ' + field._i + ': ' + method + ' => ' + (isValid || msg));
 
-                htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">');
-                htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title));
-                htmlForm.push('<div class="col-xs-8">');
+            // the current rule has passed, continue to validate
+            if ( (isValid || special) && field._i < field._rules.length - 1) {
+                field._i++;
+                me._checkRule(el, field);
+            }
+            // field was invalid, or all fields was valid
+            else {
+                field._i = 0;
 
-                vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate.toUpperCase(), opList) === -1) ? '=' : vObjCol.operate.toUpperCase();
-                htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="field-%s" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate));
+                if (special) {
+                    msgOpt.isValid = field.isValid;
+                    msgOpt.result = field._v;
+                    msgOpt.msg = field._m || '';
+                    if (!field.value && (field._e === 'focusin')) {
+                        msgOpt.type = 'tip';
+                    }
+                } else {
+                    msgOpt.isValid = isValid;
+                }
 
-                var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style);
-                if (vObjCol.searchList) {
-                    if (typeof vObjCol.searchList === 'object' && typeof vObjCol.searchList.then === 'function') {
-                        htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, sprintf('<option value="">%s</option>', that.options.formatCommonChoose())));
-                        (function (vObjCol, that) {
-                            $.when(vObjCol.searchList).done(function (ret) {
+                me._validatedField(el, field, msgOpt);
+                delete field._m;
+                delete field._v;
+            }
+        },
 
-                                var isArray = false;
-                                if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) {
-                                    var resultlist = {};
-                                    $.each(ret.data.searchlist, function (key, value) {
-                                        resultlist[value.id] = value.name;
-                                    });
-                                } else if (ret.constructor === Array || ret.constructor === Object) {
-                                    var resultlist = ret;
-                                    isArray = ret.constructor === Array ? true : isArray;
-                                }
-                                var optionList = [];
-                                $.each(resultlist, function (key, value) {
-                                    var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : '';
-                                    optionList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect));
-                                });
-                                $("form.form-commonsearch select[name='" + vObjCol.field + "']", that.$container).append(optionList.join(''));
-                            });
-                        })(vObjCol, that);
-                    } else if (typeof vObjCol.searchList == 'function') {
-                        htmlForm.push(vObjCol.searchList.call(this, vObjCol));
-                    } else {
-                        var isArray = vObjCol.searchList.constructor === Array;
-                        var searchList = [];
-                        searchList.push(sprintf('<option value="">%s</option>', that.options.formatCommonChoose()));
-                        $.each(vObjCol.searchList, function (key, value) {
-                            var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : '';
-                            searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect));
-                        });
-                        htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, searchList.join('')));
-                    }
-                } else {
-                    var placeholder = typeof vObjCol.placeholder === 'undefined' ? vObjCol.title : vObjCol.placeholder;
-                    var type = typeof vObjCol.type === 'undefined' ? 'text' : vObjCol.type;
-                    var addclass = typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass;
-                    var data = typeof vObjCol.data === 'undefined' ? '' : vObjCol.data;
-                    var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue;
-                    if (/BETWEEN$/.test(vObjCol.operate)) {
-                        var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', ''];
-                        var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder];
-                        htmlForm.push('<div class="row row-between">');
-                        htmlForm.push(sprintf('<div class="col-xs-6 11"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, data));
-                        htmlForm.push(sprintf('<div class="col-xs-6 22"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, data));
-                        htmlForm.push('</div>');
-                    } else {
-                        htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addclass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, data));
-                    }
-                }
+        // Verify a rule form a field
+        _checkRule: function(el, field) {
+            var me = this,
+                ret,
+                fn,
+                old,
+                key = field.key,
+                rule = field._rules[field._i],
+                method = rule.method,
+                params = rule.params;
 
-                htmlForm.push('</div>');
-                htmlForm.push('</div>');
+            // request has been sent, wait it
+            if (me.submiting && me.deferred[key]) {
+                return;
             }
-        }
-        htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">');
-        htmlForm.push(createFormBtn(that).join(''));
-        htmlForm.push('</div>');
-        htmlForm.push('</div>');
-        htmlForm.push('</fieldset>');
-        htmlForm.push('</form>');
+            old = field.old;
+            field._r = method;
 
-        return htmlForm;
-    };
+            if (old && !field.must && !rule.must && rule.result !== undefined &&
+                 old.ruleName === method && old.id === el.id &&
+                field.value && old.value === field.value )
+            {
+                // get result from cache
+                ret = rule.result;
+            }
+            else {
+                // get result from current rule
+                fn = _getDataRule(el, method) || me.rules[method] || noop;
+                ret = fn.call(field, el, params, field);
+                if (fn.msg) rule.msg = fn.msg;
+            }
 
-    var createFormBtn = function (that) {
-        var htmlBtn = [];
-        var searchSubmit = that.options.formatCommonSubmitButton();
-        var searchReset = that.options.formatCommonResetButton();
-        htmlBtn.push('<div class="col-sm-8 col-xs-offset-4">');
-        htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" >%s</button> ', searchSubmit));
-        htmlBtn.push(sprintf('<button type="reset" class="btn btn-default" >%s</button> ', searchReset));
-        htmlBtn.push('</div>');
-        return htmlBtn;
-    };
+            // asynchronous validation
+            if (isObject(ret) && isFunction(ret.then)) {
+                me.deferred[key] = ret;
 
-    var isSearchAvailble = function (that) {
+                // whether the field valid is unknown
+                field.isValid = undefined;
 
-        //只支持服务端搜索
-        if (!that.options.commonSearch || that.options.sidePagination != 'server' || !that.options.url) {
-            return false;
-        }
+                // show loading message
+                !me.checkOnly && me.showMsg(el, {
+                    type: 'loading',
+                    msg: me.messages.loading
+                }, field);
 
-        return true;
-    };
+                // waiting to parse the response data
+                ret.then(
+                    function(d, textStatus, jqXHR) {
+                        var data = trim(jqXHR.responseText),
+                            result,
+                            dataFilter = field.dataFilter;
 
-    var getSearchQuery = function (that, removeempty) {
-        var op = {};
-        var filter = {};
-        var value = '';
-        $("form.form-commonsearch input.operate", that.$commonsearch).each(function (i) {
-            var name = $(this).data("name");
-            var sym = $(this).val().toUpperCase();
-            var obj = $("[name='" + name + "']", that.$commonsearch);
-            if (obj.size() == 0)
-                return true;
-            var vObjCol = ColumnsForSearch[i];
-            if (obj.size() > 1) {
-                if (/BETWEEN$/.test(sym)) {
-                    var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()), value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val());
-                    if (value_begin.length || value_end.length) {
-                        if (typeof vObjCol.process === 'function') {
-                            value_begin = vObjCol.process(value_begin, 'begin');
-                            value_end = vObjCol.process(value_end, 'end');
+                        // detect if data is json or jsonp format
+                        if (/jsonp?/.test(this.dataType)) {
+                            data = d;
+                        } else if (data.charAt(0) === '{') {
+                            data = $.parseJSON(data);
                         }
-                        value = value_begin + ',' + value_end;
-                    } else {
-                        value = '';
-                    }
-                    //如果是时间筛选,将operate置为RANGE
-                    if ($("[name='" + name + "']:first", that.$commonsearch).hasClass("datetimepicker")) {
-                        sym = 'RANGE';
+
+                        // filter data
+                        result = dataFilter.call(this, data, field);
+                        if (result === undefined) result = dataFilter.call(this, data.data, field);
+
+                        rule.data = this.data;
+                        rule.result = field.old ? result : undefined;
+                        me._validatedRule(el, field, result);
+                    },
+                    function(jqXHR, textStatus){
+                        me._validatedRule(el, field, me.messages[textStatus] || textStatus);
                     }
-                } else {
-                    value = $("[name='" + name + "']:checked", that.$commonsearch).val();
-                }
-            } else {
-                value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : (sym == 'LIKE %...%' ? obj.val().replace(/\*/g, '%') : obj.val());
+                ).always(function(){
+                    delete me.deferred[key];
+                });
             }
-            if (removeempty && value == '' && sym.indexOf("NULL") == -1) {
-                return true;
+            // other result
+            else {
+                me._validatedRule(el, field, ret);
             }
+        },
 
-            op[name] = sym;
-            filter[name] = value;
-        });
-        return {op: op, filter: filter};
-    };
-
-    var getQueryParams = function (params, searchQuery, removeempty) {
-        params.filter = typeof params.filter === 'Object' ? params.filter : (params.filter ? JSON.parse(params.filter) : {});
-        params.op = typeof params.op === 'Object' ? params.op : (params.op ? JSON.parse(params.op) : {});
+        // Processing the validation
+        _validate: function(el, field) {
+            var me = this;
 
-        params.filter = $.extend({}, params.filter, searchQuery.filter);
-        params.op = $.extend({}, params.op, searchQuery.op);
-        //移除empty的值
-        if (removeempty) {
-            $.each(params.filter, function (i, j) {
-                if (j === '') {
-                    delete params.filter[i];
-                    delete params.op[i];
-                }
-            });
-        }
-        params.filter = JSON.stringify(params.filter);
-        params.op = JSON.stringify(params.op);
-        return params;
-    };
+            // doesn't validate the element that has "disabled" or "novalidate" attribute
+            if ( el.disabled || attr(el, NOVALIDATE) !== null ) {
+                return;
+            }
 
-    $.extend($.fn.bootstrapTable.defaults, {
-        commonSearch: false,
-        titleForm: "Common search",
-        actionForm: "",
-        searchFormVisible: true,
-        searchClass: 'searchit',
-        renderDefault: true,
-        onCommonSearch: function (field, text) {
-            return false;
-        },
-        onPostCommonSearch: function (table) {
-            return false;
-        }
-    });
+            field = field || me.getField(el);
+            if (!field) return;
+            if (!field._rules) me._parse(el);
+            if (!field._rules) return;
 
-    $.extend($.fn.bootstrapTable.defaults.icons, {
-        commonSearchIcon: 'glyphicon-search'
-    });
+            me._debug('info', field.key);
 
-    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
-        'common-search.bs.table': 'onCommonSearch',
-        'post-common-search.bs.table': 'onPostCommonSearch'
-    });
-    $.extend($.fn.bootstrapTable.locales[$.fn.bootstrapTable.defaults.locale], {
-        formatCommonSearch: function () {
-            return "Common search";
-        },
-        formatCommonSubmitButton: function () {
-            return "Submit";
-        },
-        formatCommonResetButton: function () {
-            return "Reset";
-        },
-        formatCommonCloseButton: function () {
-            return "Close";
-        },
-        formatCommonChoose: function () {
-            return "Choose";
-        }
-    });
+            field.isValid = true;
+            field.element = el;
+            // Cache the value
+            field.value = field.getValue();
 
-    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
+            // if the field is not required, and that has a blank value
+            if (!field.required && !field.must && !field.value) {
+                if (!_checkable(el)) {
+                    me._validatedField(el, field, {isValid: true});
+                    return true;
+                }
+            }
 
-    var BootstrapTable = $.fn.bootstrapTable.Constructor,
-            _initHeader = BootstrapTable.prototype.initHeader,
-            _initToolbar = BootstrapTable.prototype.initToolbar,
-            _load = BootstrapTable.prototype.load,
-            _initSearch = BootstrapTable.prototype.initSearch;
+            me._checkRule(el, field);
+            return field.isValid;
+        },
 
-    BootstrapTable.prototype.initHeader = function () {
-        _initHeader.apply(this, Array.prototype.slice.apply(arguments));
-        this.$header.find('th[data-field]').each(function (i) {
-            var column = $(this).data();
-            if (typeof column['width'] !== 'undefined') {
-                $(this).css("min-width", column['width']);
+        _debug: function(type, messages) {
+            if (window.console && this.options.debug) {
+                console[type](messages);
             }
-        });
-    };
-    BootstrapTable.prototype.initToolbar = function () {
-        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
-
-        if (!isSearchAvailble(this)) {
-            return;
-        }
-
-        var that = this,
-                html = [];
-        html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign));
-        html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch()));
-        html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon))
-        html.push('</button></div>');
-
-        if (that.$toolbar.find(".pull-right").size() > 0) {
-            $(html.join('')).insertBefore(that.$toolbar.find(".pull-right:first"));
-        } else {
-            that.$toolbar.append(html.join(''));
-        }
-
-        initCommonSearch(that.columns, that);
+        },
 
-        that.$toolbar.find('button[name="commonSearch"]')
-                .off('click').on('click', function () {
-            that.$commonsearch.toggleClass("hidden");
-            return;
-        });
+        /**
+         * Detecting whether the value of an element that matches a rule
+         *
+         * @method test
+         * @param {Element} el - input element
+         * @param {String} rule - rule name
+         */
+        test: function(el, rule) {
+            var me = this,
+                ret,
+                parts = rRule.exec(rule),
+                field,
+                method,
+                params;
 
-        that.$container.on("click", "." + that.options.searchClass, function () {
-            var obj = $("form [name='" + $(this).data("field") + "']", that.$commonsearch);
-            if (obj.size() > 0) {
-                obj.val($(this).data("value"));
-                $("form", that.$commonsearch).trigger("submit");
+            if (parts) {
+                method = parts[1];
+                if (method in me.rules) {
+                    params = parts[2] || parts[3];
+                    params = params ? params.split(', ') : undefined;
+                    field = me.getField(el, true);
+                    field._r = method;
+                    field.value = field.getValue();
+                    ret = me.rules[method].call(field, el, params);
+                }
             }
-        });
-        var queryParams = that.options.queryParams;
-        //匹配默认搜索值
-        this.options.queryParams = function (params) {
-            return queryParams(getQueryParams(params, getSearchQuery(this, true)));
-        };
-        this.trigger('post-common-search', that);
-
-    };
 
-    BootstrapTable.prototype.onCommonSearch = function () {
-        var searchQuery = getSearchQuery(this);
-        this.trigger('common-search', this, searchQuery);
-        this.options.pageNumber = 1;
-        this.refresh({});
-    };
+            return ret === true || ret === undefined || ret === null;
+        },
 
-    BootstrapTable.prototype.load = function (data) {
-        _load.apply(this, Array.prototype.slice.apply(arguments));
+        _getDisplay: function(el, str) {
+            return !isString(str) ? isFunction(str) ? str.call(this, el) : '' : str;
+        },
 
-        if (!isSearchAvailble(this)) {
-            return;
-        }
-    };
+        _getMsgOpt: function(obj, field) {
+            var opt = field ? field : this.options;
+            return $.extend({
+                type: 'error',
+                pos: _getPos(opt.msgClass),
+                target: opt.target,
+                wrapper: opt.msgWrapper,
+                style: opt.msgStyle,
+                cls: opt.msgClass,
+                arrow: opt.msgArrow,
+                icon: opt.msgIcon
+            }, isString(obj) ? {msg: obj} : obj);
+        },
 
-    BootstrapTable.prototype.initSearch = function () {
-        _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+        _getMsgDOM: function(el, msgOpt) {
+            var $el = $(el), $msgbox, datafor, tgt, container;
 
-        if (!isSearchAvailble(this)) {
-            return;
-        }
+            if ( $el.is(INPUT_SELECTOR) ) {
+                tgt = msgOpt.target || attr(el, DATA_TARGET);
+                if (tgt) {
+                    tgt = !isFunction(tgt) ? tgt.charAt(0) === '#' ? $(tgt) : this.$el.find(tgt) : tgt.call(this, el);
+                    if (tgt.length) {
+                        if ( tgt.is(INPUT_SELECTOR) ) {
+                            $el = tgt
+                            el = tgt.get(0);
+                        } else if ( tgt.hasClass(CLS_MSG_BOX) ) {
+                            $msgbox = tgt;
+                        } else {
+                            container = tgt;
+                        }
+                    }
+                }
+                if (!$msgbox) {
+                    datafor = (!_checkable(el) || !el.name) && el.id ? el.id : el.name;
+                    $msgbox = (container || this.$el).find(msgOpt.wrapper + '.' + CLS_MSG_BOX + '[for="' + datafor + '"]');
+                }
+            } else {
+                $msgbox = $el;
+            }
 
-        var that = this;
-        var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
-        this.data = fp ? $.grep(this.data, function (item, i) {
-            for (var key in fp) {
-                var fval = fp[key].toLowerCase();
-                var value = item[key];
-                value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header,
-                        that.header.formatters[$.inArray(key, that.header.fields)],
-                        [value, item, i], value);
+            // Create new message box
+            if (!msgOpt.hide && !$msgbox.length) {
+                $msgbox = $('<'+ msgOpt.wrapper + '>').attr({
+                    'class': CLS_MSG_BOX + (msgOpt.cls ? ' ' + msgOpt.cls : ''),
+                    'style': msgOpt.style || undefined,
+                    'for': datafor
+                });
 
-                if (!($.inArray(key, that.header.fields) !== -1 &&
-                        (typeof value === 'string' || typeof value === 'number') &&
-                        (value + '').toLowerCase().indexOf(fval) !== -1)) {
-                    return false;
+                if (container) {
+                    $msgbox.appendTo(container);
+                } else {
+                    if ( _checkable(el) ) {
+                        var $parent = $el.parent();
+                        $msgbox.appendTo( $parent.is('label') ? $parent.parent() : $parent );
+                    } else {
+                        $msgbox[!msgOpt.pos || msgOpt.pos === 'right' ? 'insertAfter' : 'insertBefore']($el);
+                    }
                 }
             }
-            return true;
-        }) : this.data;
-    };
-}(jQuery);
 
-define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) {
-    return function () {
-        var ret, fn;
-        return ret || global.$.fn.bootstrapTable.defaults;
-    };
-}(this)));
+            return $msgbox;
+        },
 
-/*!art-template - Template Engine | http://aui.github.com/artTemplate/*/
-!function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"&#60;",">":"&#62;",'"':"&#34;","'":"&#39;","&":"&#38;"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}();
-/**
- * 将BootstrapTable的行使用自定义的模板来渲染
- * 
- * @author: karson
- * @version: v0.0.1
- *
- * @update 2017-06-24 <http://github.com/karsonzhang/fastadmin>
- */
+        /**
+         * Show validation message
+         *
+         * @method showMsg
+         * @param {Element} el - input element
+         * @param {Object} msgOpt
+         */
+        showMsg: function(el, msgOpt, /*INTERNAL*/ field) {
+            if (!el) return;
+            var me = this,
+                opt = me.options,
+                msgShow,
+                msgMaker,
+                temp,
+                $msgbox;
 
-!function ($) {
-    'use strict';
+            if (isObject(el) && !el.jquery && !msgOpt) {
+                $.each(el, function(key, msg) {
+                    var el = me.elements[key] || me.$el.find(_key2selector(key))[0];
+                    me.showMsg(el, msg);
+                });
+                return;
+            }
 
-    $.extend($.fn.bootstrapTable.defaults, {
-        //是否启用模板渲染
-        templateView: false,
-        //数据格式化的模板ID或格式函数
-        templateFormatter: "itemtpl",
-        //添加的父类的class
-        templateParentClass: "row row-flex",
-        //向table添加的class
-        templateTableClass: "table-template",
+            if ($(el).is(INPUT_SELECTOR)) {
+                field = field || me.getField(el);
+            }
 
-    });
+            if (!(msgMaker = (field || opt).msgMaker)) {
+                return;
+            }
 
-    var BootstrapTable = $.fn.bootstrapTable.Constructor,
-            _initContainer = BootstrapTable.prototype.initContainer,
-            _initBody = BootstrapTable.prototype.initBody,
-            _initRow = BootstrapTable.prototype.initRow;
+            msgOpt = me._getMsgOpt(msgOpt, field);
+            el = (el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]') : $(el)).get(0);
 
-    BootstrapTable.prototype.initContainer = function () {
-        _initContainer.apply(this, Array.prototype.slice.apply(arguments));
-        var that = this;
-        if (!that.options.templateView) {
-            return;
-        }
-        that.options.cardView = true;
+            // ok or tip
+            if (!msgOpt.msg && msgOpt.type !== 'error') {
+                temp = attr(el, 'data-' + msgOpt.type);
+                if (temp !== null) msgOpt.msg = temp;
+            }
 
-    };
+            if ( !isString(msgOpt.msg) ) {
+                return;
+            }
 
-    BootstrapTable.prototype.initBody = function () {
-        var that = this;
-        $.extend(that.options, {
-            showHeader: !that.options.templateView ? $.fn.bootstrapTable.defaults.showHeader : false,
-            showFooter: !that.options.templateView ? $.fn.bootstrapTable.defaults.showFooter : false,
-        });
-        $(that.$el).toggleClass(that.options.templateTableClass, that.options.templateView);
+            $msgbox = me._getMsgDOM(el, msgOpt);
 
-        _initBody.apply(this, Array.prototype.slice.apply(arguments));
+            !rPos.test($msgbox[0].className) && $msgbox.addClass(msgOpt.cls);
+            if ( isIE === 6 && msgOpt.pos === 'bottom' ) {
+                $msgbox[0].style.marginTop = $(el).outerHeight() + 'px';
+            }
+            $msgbox.html( msgMaker.call(me, msgOpt) )[0].style.display = '';
 
-        if (!that.options.templateView) {
-            return;
-        } else {
-            //由于Bootstrap是基于Table的,添加一个父类容器
-            $("> *:not(.no-records-found)", that.$body).wrapAll($("<div />").addClass(that.options.templateParentClass));
-        }
-    };
+            if (isFunction(msgShow = field && field.msgShow || opt.msgShow)) {
+                msgShow.call(me, $msgbox, msgOpt.type);
+            }
+        },
 
-    BootstrapTable.prototype.initRow = function (item, i, data, parentDom) {
-        var that = this;
-        //如果未启用则使用原生的initRow方法
-        if (!that.options.templateView) {
-            return _initRow.apply(that, Array.prototype.slice.apply(arguments));
-        }
-        var $content = '';
-        if (typeof that.options.templateFormatter === 'function') {
-            $content = that.options.templateFormatter.call(that, item, i, data);
-        } else {
-            var Template = require('template');
-            $content = Template(that.options.templateFormatter, {item: item, i: i, data: data});
-        }
-        return $content;
-    };
+        /**
+         * Hide validation message
+         *
+         * @method hideMsg
+         * @param {Element} el - input element
+         * @param {Object} msgOpt optional
+         */
+        hideMsg: function(el, msgOpt, /*INTERNAL*/ field) {
+            var me = this,
+                opt = me.options,
+                msgHide,
+                $msgbox;
 
-}(jQuery);
+            el = $(el).get(0);
+            if ($(el).is(INPUT_SELECTOR)) {
+                field = field || me.getField(el);
+                if (field) {
+                    if (field.isValid || me.reseting) attr(el, ARIA_INVALID, null);
+                }
+            }
 
-define("bootstrap-table-template", ["bootstrap-table","template"], (function (global) {
-    return function () {
-        var ret, fn;
-        return ret || global.$.fn.bootstrapTable.defaults;
-    };
-}(this)));
+            msgOpt = me._getMsgOpt(msgOpt, field);
+            msgOpt.hide = true;
 
-define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table', 'bootstrap-table-lang', 'bootstrap-table-export', 'bootstrap-table-commonsearch', 'bootstrap-table-template'], function ($, undefined, Moment) {
-    var Table = {
-        list: {},
-        // Bootstrap-table 基础配置
-        defaults: {
-            url: '',
-            sidePagination: 'server',
-            method: 'get', //请求方法
-            toolbar: ".toolbar", //工具栏
-            search: true, //是否启用快速搜索
-            cache: false,
-            commonSearch: true, //是否启用通用搜索
-            searchFormVisible: false, //是否始终显示搜索表单
-            titleForm: '', //为空则不显示标题,不定义默认显示:普通搜索
-            idTable: 'commonTable',
-            showExport: true,
-            exportDataType: "all",
-            exportTypes: ['json', 'xml', 'csv', 'txt', 'doc', 'excel'],
-            pageSize: 10,
-            pageList: [10, 25, 50, 'All'],
-            pagination: true,
-            clickToSelect: true, //是否启用点击选中
-            singleSelect: false, //是否启用单选
-            showRefresh: false,
-            locale: 'zh-CN',
-            showToggle: true,
-            showColumns: true,
-            pk: 'id',
-            sortName: 'id',
-            sortOrder: 'desc',
-            paginationFirstText: __("First"),
-            paginationPreText: __("Previous"),
-            paginationNextText: __("Next"),
-            paginationLastText: __("Last"),
-            cardView: false, //卡片视图
-            checkOnInit: true, //是否在初始化时判断
-            escape: true, //是否对内容进行转义
-            extend: {
-                index_url: '',
-                add_url: '',
-                edit_url: '',
-                del_url: '',
-                import_url: '',
-                multi_url: '',
-                dragsort_url: 'ajax/weigh',
+            $msgbox = me._getMsgDOM(el, msgOpt);
+            if (!$msgbox.length) return;
+
+            if ( isFunction(msgHide = field && field.msgHide || opt.msgHide) ) {
+                msgHide.call(me, $msgbox, msgOpt.type);
+            } else {
+                $msgbox[0].style.display = 'none';
+                $msgbox[0].innerHTML = '';
             }
         },
-        // Bootstrap-table 列配置
-        columnDefaults: {
-            align: 'center',
-            valign: 'middle',
-        },
-        config: {
-            firsttd: 'tbody tr td:first-child:not(:has(div.card-views))',
-            toolbar: '.toolbar',
-            refreshbtn: '.btn-refresh',
-            addbtn: '.btn-add',
-            editbtn: '.btn-edit',
-            delbtn: '.btn-del',
-            importbtn: '.btn-import',
-            multibtn: '.btn-multi',
-            disabledbtn: '.btn-disabled',
-            editonebtn: '.btn-editone',
-            dragsortfield: 'weigh',
-        },
-        api: {
-            init: function (defaults, columnDefaults, locales) {
-                defaults = defaults ? defaults : {};
-                columnDefaults = columnDefaults ? columnDefaults : {};
-                locales = locales ? locales : {};
-                // 如果是iOS设备则启用卡片视图
-                if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
-                    Table.defaults.cardView = true;
+
+        /**
+         * Get field information
+         *
+         * @method getField
+         * @param {Element} - input element
+         * @return {Object} field
+         */
+        getField: function(el, must) {
+            var me = this,
+                key,
+                field;
+
+            if (isString(el)) {
+                key = el;
+                el = undefined;
+            } else {
+                if (attr(el, DATA_RULE)) {
+                    return me._parse(el);
                 }
-                // 写入bootstrap-table默认配置
-                $.extend(true, $.fn.bootstrapTable.defaults, Table.defaults, defaults);
-                // 写入bootstrap-table column配置
-                $.extend($.fn.bootstrapTable.columnDefaults, Table.columnDefaults, columnDefaults);
-                // 写入bootstrap-table locale配置
-                $.extend($.fn.bootstrapTable.locales[Table.defaults.locale], {
-                    formatCommonSearch: function () {
-                        return __('Common search');
-                    },
-                    formatCommonSubmitButton: function () {
-                        return __('Submit');
-                    },
-                    formatCommonResetButton: function () {
-                        return __('Reset');
-                    },
-                    formatCommonCloseButton: function () {
-                        return __('Close');
-                    },
-                    formatCommonChoose: function () {
-                        return __('Choose');
-                    }
-                }, locales);
-            },
-            // 绑定事件
-            bindevent: function (table) {
-                //Bootstrap-table的父元素,包含table,toolbar,pagnation
-                var parenttable = table.closest('.bootstrap-table');
-                //Bootstrap-table配置
-                var options = table.bootstrapTable('getOptions');
-                //Bootstrap操作区
-                var toolbar = $(options.toolbar, parenttable);
-                //当刷新表格时
-                table.on('load-error.bs.table', function (status, res, e) {
-                    if (e.status === 0) {
-                        return;
-                    }
-                    Toastr.error(__('Unknown data format'));
-                });
-                //当刷新表格时
-                table.on('refresh.bs.table', function (e, settings, data) {
-                    $(Table.config.refreshbtn, toolbar).find(".fa").addClass("fa-spin");
-                });
-                //当双击单元格时
-                table.on('dbl-click-row.bs.table', function (e, row, element, field) {
-                    $(Table.config.editonebtn, element).trigger("click");
-                });
-                //当内容渲染完成后
-                table.on('post-body.bs.table', function (e, settings, json, xhr) {
-                    $(Table.config.refreshbtn, toolbar).find(".fa").removeClass("fa-spin");
-                    $(Table.config.disabledbtn, toolbar).toggleClass('disabled', true);
-                    if ($(Table.config.firsttd, table).find("input[type='checkbox'][data-index]").size() > 0) {
-                        // 挺拽选择,需要重新绑定事件
-                        require(['drag', 'drop'], function () {
-                            $(Table.config.firsttd, table).drag("start", function (ev, dd) {
-                                return $('<div class="selection" />').css('opacity', .65).appendTo(document.body);
-                            }).drag(function (ev, dd) {
-                                $(dd.proxy).css({
-                                    top: Math.min(ev.pageY, dd.startY),
-                                    left: Math.min(ev.pageX, dd.startX),
-                                    height: Math.abs(ev.pageY - dd.startY),
-                                    width: Math.abs(ev.pageX - dd.startX)
-                                });
-                            }).drag("end", function (ev, dd) {
-                                $(dd.proxy).remove();
-                            });
-                            $(Table.config.firsttd, table).drop("start", function () {
-                                Table.api.toggleattr(this);
-                            }).drop(function () {
-                                Table.api.toggleattr(this);
-                            }).drop("end", function () {
-                                Table.api.toggleattr(this);
-                            });
-                            $.drop({
-                                multi: true
-                            });
-                        });
-                    }
-                });
-                // 处理选中筛选框后按钮的状态统一变更
-                table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
-                    var ids = Table.api.selectedids(table);
-                    $(Table.config.disabledbtn, toolbar).toggleClass('disabled', !ids.length);
-                });
-                // 刷新按钮事件
-                $(toolbar).on('click', Table.config.refreshbtn, function () {
-                    table.bootstrapTable('refresh');
-                });
-                // 添加按钮事件
-                $(toolbar).on('click', Table.config.addbtn, function () {
-                    var ids = Table.api.selectedids(table);
-                    var url = options.extend.add_url;
-                    if (url.indexOf("{ids}") !== -1) {
-                        url = Table.api.replaceurl(url, {ids: ids.length > 0 ? ids.join(",") : 0}, table);
-                    }
-                    Fast.api.open(url, __('Add'), $(this).data() || {});
-                });
-                // 导入按钮事件
-                if ($(Table.config.importbtn, toolbar).size() > 0) {
-                    require(['upload'], function (Upload) {
-                        Upload.api.plupload($(Table.config.importbtn, toolbar), function (data, ret) {
-                            Fast.api.ajax({
-                                url: options.extend.import_url,
-                                data: {file: data.url},
-                            }, function (data, ret) {
-                                table.bootstrapTable('refresh');
-                            });
-                        });
-                    });
+                if (el.id && '#' + el.id in me.fields || !el.name) {
+                    key = '#' + el.id;
+                } else {
+                    key = el.name;
                 }
-                // 批量编辑按钮事件
-                $(toolbar).on('click', Table.config.editbtn, function () {
-                    var that = this;
-                    //循环弹出多个编辑框
-                    $.each(table.bootstrapTable('getSelections'), function (index, row) {
-                        var url = options.extend.edit_url;
-                        row = $.extend({}, row ? row : {}, {ids: row[options.pk]});
-                        var url = Table.api.replaceurl(url, row, table);
-                        Fast.api.open(url, __('Edit'), $(that).data() || {});
-                    });
-                });
-                // 批量操作按钮事件
-                $(toolbar).on('click', Table.config.multibtn, function () {
-                    var ids = Table.api.selectedids(table);
-                    Table.api.multi($(this).data("action"), ids, table, this);
-                });
-                // 批量删除按钮事件
-                $(toolbar).on('click', Table.config.delbtn, function () {
-                    var that = this;
-                    var ids = Table.api.selectedids(table);
-                    Layer.confirm(
-                        __('Are you sure you want to delete the %s selected item?', ids.length),
-                        {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
-                        function (index) {
-                            Table.api.multi("del", ids, table, that);
-                            Layer.close(index);
-                        }
-                    );
-                });
-                // 拖拽排序
-                require(['dragsort'], function () {
-                    //绑定拖动排序
-                    $("tbody", table).dragsort({
-                        itemSelector: 'tr:visible',
-                        dragSelector: "a.btn-dragsort",
-                        dragEnd: function (a, b) {
-                            var element = $("a.btn-dragsort", this);
-                            var data = table.bootstrapTable('getData');
-                            var current = data[parseInt($(this).data("index"))];
-                            var options = table.bootstrapTable('getOptions');
-                            //改变的值和改变的ID集合
-                            var ids = $.map($("tbody tr:visible", table), function (tr) {
-                                return data[parseInt($(tr).data("index"))][options.pk];
-                            });
-                            var changeid = current[options.pk];
-                            var pid = typeof current.pid != 'undefined' ? current.pid : '';
-                            var params = {
-                                url: table.bootstrapTable('getOptions').extend.dragsort_url,
-                                data: {
-                                    ids: ids.join(','),
-                                    changeid: changeid,
-                                    pid: pid,
-                                    field: Table.config.dragsortfield,
-                                    orderway: options.sortOrder,
-                                    table: options.extend.table
-                                }
-                            };
-                            Fast.api.ajax(params, function (data, ret) {
-                                var success = $(element).data("success") || $.noop;
-                                if (typeof success === 'function') {
-                                    if (false === success.call(element, data, ret)) {
-                                        return false;
-                                    }
-                                }
-                                table.bootstrapTable('refresh');
-                            }, function () {
-                                var error = $(element).data("error") || $.noop;
-                                if (typeof error === 'function') {
-                                    if (false === error.call(element, data, ret)) {
-                                        return false;
-                                    }
-                                }
-                                table.bootstrapTable('refresh');
-                            });
-                        },
-                        placeHolderTemplate: ""
-                    });
-                });
-                $(table).on("click", "input[data-id][name='checkbox']", function (e) {
-                    var ids = $(this).data("id");
-                    var row = Table.api.getrowbyid(ids);
-                    table.trigger('check.bs.table', [row, this]);
-                });
-                $(table).on("click", "[data-id].btn-change", function (e) {
-                    e.preventDefault();
-                    Table.api.multi($(this).data("action") ? $(this).data("action") : '', [$(this).data("id")], table, this);
-                });
-                $(table).on("click", "[data-id].btn-edit", function (e) {
-                    e.preventDefault();
-                    var ids = $(this).data("id");
-                    var row = Table.api.getrowbyid(ids);
-                    row.ids = ids;
-                    var url = Table.api.replaceurl(options.extend.edit_url, row, table);
-                    Fast.api.open(url, __('Edit'), $(this).data() || {});
-                });
-                $(table).on("click", "[data-id].btn-del", function (e) {
-                    e.preventDefault();
-                    var id = $(this).data("id");
-                    var that = this;
-                    Layer.confirm(
-                        __('Are you sure you want to delete this item?'),
-                        {icon: 3, title: __('Warning'), shadeClose: true},
-                        function (index) {
-                            Table.api.multi("del", id, table, that);
-                            Layer.close(index);
-                        }
-                    );
-                });
-                var id = table.attr("id");
-                Table.list[id] = table;
-                return table;
-            },
-            // 批量操作请求
-            multi: function (action, ids, table, element) {
-                var options = table.bootstrapTable('getOptions');
-                var data = element ? $(element).data() : {};
-                var ids = ($.isArray(ids) ? ids.join(",") : ids);
-                var url = typeof data.url !== "undefined" ? data.url : (action == "del" ? options.extend.del_url : options.extend.multi_url);
-                url = this.replaceurl(url, {ids: ids}, table);
-                var params = typeof data.params !== "undefined" ? (typeof data.params == 'object' ? $.param(data.params) : data.params) : '';
-                var options = {url: url, data: {action: action, ids: ids, params: params}};
-                Fast.api.ajax(options, function (data, ret) {
-                    var success = $(element).data("success") || $.noop;
-                    if (typeof success === 'function') {
-                        if (false === success.call(element, data, ret)) {
-                            return false;
-                        }
-                    }
-                    table.bootstrapTable('refresh');
-                }, function (data, ret) {
-                    var error = $(element).data("error") || $.noop;
-                    if (typeof error === 'function') {
-                        if (false === error.call(element, data, ret)) {
-                            return false;
-                        }
-                    }
-                });
-            },
-            // 单元格元素事件
-            events: {
-                operate: {
-                    'click .btn-editone': function (e, value, row, index) {
-                        e.stopPropagation();
-                        e.preventDefault();
-                        var table = $(this).closest('table');
-                        var options = table.bootstrapTable('getOptions');
-                        var ids = row[options.pk];
-                        row = $.extend({}, row ? row : {}, {ids: ids});
-                        var url = options.extend.edit_url;
-                        Fast.api.open(Table.api.replaceurl(url, row, table), __('Edit'), $(this).data() || {});
-                    },
-                    'click .btn-delone': function (e, value, row, index) {
-                        e.stopPropagation();
-                        e.preventDefault();
-                        var that = this;
-                        var top = $(that).offset().top - $(window).scrollTop();
-                        var left = $(that).offset().left - $(window).scrollLeft() - 260;
-                        if (top + 154 > $(window).height()) {
-                            top = top - 154;
-                        }
-                        if ($(window).width() < 480) {
-                            top = left = undefined;
-                        }
-                        Layer.confirm(
-                            __('Are you sure you want to delete this item?'),
-                            {icon: 3, title: __('Warning'), offset: [top, left], shadeClose: true},
-                            function (index) {
-                                var table = $(that).closest('table');
-                                var options = table.bootstrapTable('getOptions');
-                                Table.api.multi("del", row[options.pk], table, that);
-                                Layer.close(index);
-                            }
-                        );
-                    }
-                }
-            },
-            // 单元格数据格式化
-            formatter: {
-                icon: function (value, row, index) {
-                    if (!value)
-                        return '';
-                    value = value.indexOf(" ") > -1 ? value : "fa fa-" + value;
-                    //渲染fontawesome图标
-                    return '<i class="' + value + '"></i> ' + value;
-                },
-                image: function (value, row, index) {
-                    value = value ? value : '/assets/img/blank.gif';
-                    var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center';
-                    return '<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />';
-                },
-                images: function (value, row, index) {
-                    value = value === null ? '' : value.toString();
-                    var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center';
-                    var arr = value.split(',');
-                    var html = [];
-                    $.each(arr, function (i, value) {
-                        value = value ? value : '/assets/img/blank.gif';
-                        html.push('<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />');
-                    });
-                    return html.join(' ');
-                },
-                status: function (value, row, index) {
-                    //颜色状态数组,可使用red/yellow/aqua/blue/navy/teal/olive/lime/fuchsia/purple/maroon
-                    var colorArr = {normal: 'success', hidden: 'grey', deleted: 'danger', locked: 'info'};
-                    //如果字段列有定义custom
-                    if (typeof this.custom !== 'undefined') {
-                        colorArr = $.extend(colorArr, this.custom);
-                    }
-                    value = value === null ? '' : value.toString();
-                    var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary';
-                    value = value.charAt(0).toUpperCase() + value.slice(1);
-                    //渲染状态
-                    var html = '<span class="text-' + color + '"><i class="fa fa-circle"></i> ' + __(value) + '</span>';
-                    return html;
-                },
-                url: function (value, row, index) {
-                    return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>';
-                },
-                search: function (value, row, index) {
-                    return '<a href="javascript:;" class="searchit" data-field="' + this.field + '" data-value="' + value + '">' + value + '</a>';
-                },
-                addtabs: function (value, row, index) {
-                    var url = Table.api.replaceurl(this.url, row, this.table);
-                    var title = this.atitle ? this.atitle : __("Search %s", value);
-                    return '<a href="' + Fast.api.fixurl(url) + '" class="addtabsit" data-value="' + value + '" title="' + title + '">' + value + '</a>';
-                },
-                dialog: function (value, row, index) {
-                    var url = Table.api.replaceurl(this.url, row, this.table);
-                    var title = this.atitle ? this.atitle : __("View %s", value);
-                    return '<a href="' + Fast.api.fixurl(url) + '" class="dialogit" data-value="' + value + '" title="' + title + '">' + value + '</a>';
-                },
-                flag: function (value, row, index) {
-                    value = value === null ? '' : value.toString();
-                    var colorArr = {index: 'success', hot: 'warning', recommend: 'danger', 'new': 'info'};
-                    //如果字段列有定义custom
-                    if (typeof this.custom !== 'undefined') {
-                        colorArr = $.extend(colorArr, this.custom);
-                    }
-                    if (typeof this.customField !== 'undefined' && typeof row[this.customField] !== 'undefined') {
-                        value = row[this.customField];
-                    }
-                    //渲染Flag
-                    var html = [];
-                    var arr = value.split(',');
-                    $.each(arr, function (i, value) {
-                        value = value === null ? '' : value.toString();
-                        if (value == '')
-                            return true;
-                        var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary';
-                        value = value.charAt(0).toUpperCase() + value.slice(1);
-                        html.push('<span class="label label-' + color + '">' + __(value) + '</span>');
-                    });
-                    return html.join(' ');
-                },
-                label: function (value, row, index) {
-                    return Table.api.formatter.flag.call(this, value, row, index);
-                },
-                datetime: function (value, row, index) {
-                    return value ? Moment(parseInt(value) * 1000).format("YYYY-MM-DD HH:mm:ss") : __('None');
-                },
-                operate: function (value, row, index) {
-                    var table = this.table;
-                    // 操作配置
-                    var options = table ? table.bootstrapTable('getOptions') : {};
-                    // 默认按钮组
-                    var buttons = $.extend([], this.buttons || []);
-
-                    if (options.extend.dragsort_url !== '') {
-                        buttons.push({
-                            name: 'dragsort',
-                            icon: 'fa fa-arrows',
-                            title: __('Drag to sort'),
-                            classname: 'btn btn-xs btn-primary btn-dragsort'
-                        });
-                    }
-                    if (options.extend.edit_url !== '') {
-                        buttons.push({
-                            name: 'edit',
-                            icon: 'fa fa-pencil',
-                            title: __('Edit'),
-                            classname: 'btn btn-xs btn-success btn-editone',
-                            url: options.extend.edit_url
-                        });
-                    }
-                    if (options.extend.del_url !== '') {
-                        buttons.push({
-                            name: 'del',
-                            icon: 'fa fa-trash',
-                            title: __('Del'),
-                            classname: 'btn btn-xs btn-danger btn-delone'
-                        });
-                    }
-                    return Table.api.buttonlink(this, buttons, value, row, index, 'operate');
-                },
-                buttons: function (value, row, index) {
-                    // 默认按钮组
-                    var buttons = $.extend([], this.buttons || []);
-                    return Table.api.buttonlink(this, buttons, value, row, index, 'buttons');
-                }
-            },
-            buttonlink: function (column, buttons, value, row, index, type) {
-                var table = column.table;
-                type = typeof type === 'undefined' ? 'buttons' : type;
-                var options = table ? table.bootstrapTable('getOptions') : {};
-                var html = [];
-                var hidden, url, classname, icon, text, title, refresh, confirm, extend;
-                var fieldIndex = column.fieldIndex;
-
-                $.each(buttons, function (i, j) {
-                    if (type === 'operate') {
-                        if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') {
-                            return true;
-                        }
-                        if (['add', 'edit', 'del', 'multi', 'dragsort'].indexOf(j.name) > -1 && !options.extend[j.name + "_url"]) {
-                            return true;
-                        }
-                    }
-                    var attr = table.data(type + "-" + j.name);
-                    if (typeof attr === 'undefined' || attr) {
-                        hidden = typeof j.hidden === 'function' ? j.hidden.call(table, row, j) : (j.hidden ? j.hidden : false);
-                        if (hidden) {
-                            return true;
-                        }
-                        url = j.url ? j.url : '';
-                        url = typeof url === 'function' ? url.call(table, row, j) : (url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;');
-                        classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one';
-                        icon = j.icon ? j.icon : '';
-                        text = j.text ? j.text : '';
-                        title = j.title ? j.title : text;
-                        refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : '';
-                        confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : '';
-                        extend = j.extend ? j.extend : '';
-                        html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>');
-                    }
-                });
-                return html.join(' ');
-            },
-            //替换URL中的数据
-            replaceurl: function (url, row, table) {
-                var options = table ? table.bootstrapTable('getOptions') : null;
-                var ids = options ? row[options.pk] : 0;
-                row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0);
-                //自动添加ids参数
-                url = !url.match(/\{ids\}/i) ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url;
-                url = url.replace(/\{(.*?)\}/gi, function (matched) {
-                    matched = matched.substring(1, matched.length - 1);
-                    if (matched.indexOf(".") !== -1) {
-                        var temp = row;
-                        var arr = matched.split(/\./);
-                        for (var i = 0; i < arr.length; i++) {
-                            if (typeof temp[arr[i]] !== 'undefined') {
-                                temp = temp[arr[i]];
-                            }
-                        }
-                        return typeof temp === 'object' ? '' : temp;
-                    }
-                    return row[matched];
-                });
-                return url;
-            },
-            // 获取选中的条目ID集合
-            selectedids: function (table) {
-                var options = table.bootstrapTable('getOptions');
-                if (options.templateView) {
-                    return $.map($("input[data-id][name='checkbox']:checked"), function (dom) {
-                        return $(dom).data("id");
-                    });
-                } else {
-                    return $.map(table.bootstrapTable('getSelections'), function (row) {
-                        return row[options.pk];
-                    });
-                }
-            },
-            // 切换复选框状态
-            toggleattr: function (table) {
-                $("input[type='checkbox']", table).trigger('click');
-            },
-            // 根据行索引获取行数据
-            getrowdata: function (table, index) {
-                index = parseInt(index);
-                var data = table.bootstrapTable('getData');
-                return typeof data[index] !== 'undefined' ? data[index] : null;
-            },
-            // 根据行索引获取行数据
-            getrowbyindex: function (table, index) {
-                return Table.api.getrowdata(table, index);
-            },
-            // 根据主键ID获取行数据
-            getrowbyid: function (table, id) {
-                var row = {};
-                var options = table.bootstrapTable("getOptions");
-                $.each(table.bootstrapTable('getData'), function (i, j) {
-                    if (j[options.pk] == id) {
-                        row = j;
-                        return false;
-                    }
-                });
-                return row;
-            }
-        },
-    };
-    return Table;
-});
-
-/**
- * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill
- * v1.5.2
- *
- * Copyright 2013, Moxiecode Systems AB
- * Released under GPL License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- *
- * Date: 2016-11-23
- */
-!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r<e.length;++r){if(i=s[e[r]]||o(e[r]),!i)throw"module definition dependecy not found: "+e[r];n.push(i)}t.apply(null,n)}function n(e,n,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(n===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";i(n,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function o(t){for(var i=e,n=t.split(/[.\/]/),r=0;r<n.length;++r){if(!i[n[r]])return;i=i[n[r]]}return i}function a(i){for(var n=0;n<i.length;n++){for(var r=e,o=i[n],a=o.split(/[.\/]/),u=0;u<a.length-1;++u)r[a[u]]===t&&(r[a[u]]={}),r=r[a[u]];r[a[a.length-1]]=s[o]}}var s={};n("moxie/core/utils/Basic",[],function(){function e(e){var t;return e===t?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}function t(){return a(!1,!1,arguments)}function i(){return a(!0,!1,arguments)}function n(){return a(!1,!0,arguments)}function r(){return a(!0,!0,arguments)}function o(i){switch(e(i)){case"array":return Array.prototype.slice.call(i);case"object":return t({},i)}return i}function a(t,i,n){var r,s=n[0];return u(n,function(n,c){c>0&&u(n,function(n,u){var c=-1!==m(e(n),["array","object"]);return n===r||t&&s[u]===r?!0:(c&&i&&(n=o(n)),e(s[u])===e(n)&&c?a(t,i,[s[u],n]):s[u]=n,void 0)})}),s}function s(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function u(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function c(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function l(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++r<o&&!e?n(r):i(e)})}var r=0,o=t.length;"function"!==e(i)&&(i=function(){}),t&&t.length||i(),n(r)}function d(e,t){var i=0,n=e.length,r=new Array(n);u(e,function(e,o){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),r[o]=a,i++,i===n&&(r.unshift(null),t.apply(this,r))})})}function m(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var i=0,n=t.length;n>i;i++)if(t[i]===e)return i}return-1}function h(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===m(t[r],i)&&n.push(t[r]);return n.length?n:!1}function f(e,t){var i=[];return u(e,function(e){-1!==m(e,t)&&i.push(e)}),i.length?i:null}function p(e){var t,i=[];for(t=0;t<e.length;t++)i[t]=e[t];return i}function g(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e}function x(e){if("string"!=typeof e)return e;var t,i={t:1099511627776,g:1073741824,m:1048576,k:1024};return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),t=e[2],e=+e[1],i.hasOwnProperty(t)&&(e*=i[t]),Math.floor(e)}function v(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e(t)?t:""})}function y(e,t){var i=this;setTimeout(function(){e.call(i)},t||1)}var w=function(){var e=0;return function(t){var i,n=(new Date).getTime().toString(32);for(i=0;5>i;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:w,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:s,each:u,isEmptyObj:c,inSeries:l,inParallel:d,inArray:m,arrayDiff:h,arrayIntersect:f,toArray:p,trim:g,sprintf:v,parseSizeStr:x,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m<e.length);return f=p.join(""),i?t(f):f},n=function(t,i){if(i&&(t=e(t)),"function"==typeof window.btoa)return window.btoa(t);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!t)return t;do n=t.charCodeAt(m++),r=t.charCodeAt(m++),o=t.charCodeAt(m++),l=n<<16|r<<8|o,a=63&l>>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(m<t.length);f=p.join("");var g=t.length%3;return(g?f.slice(0,g-3):f)+"===".slice(g||3)};return{utf8_encode:e,utf8_decode:t,atob:i,btoa:n}}),n("moxie/core/utils/Env",["moxie/core/utils/Basic"],function(e){function t(e,t,i){var n=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),n=0;r>n;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]<t[n]){o=-1;break}if(e[n]>t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d<m.length;d+=2){var h=m[d],f=m[d+1];if(typeof t===r){t={};for(s in f)u=f[s],typeof u===o?t[u[0]]=e:t[u]=e}for(i=a=0;i<h.length;i++)if(c=h[i].exec(this.getUA())){for(s=0;s<f.length;s++)l=c[++a],u=f[s],typeof u===o&&u.length>0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a<n[r].length;a++)if(u.has(n[r][a],t))return r===i?e:r}else if(u.has(n[r],t))return r===i?e:r;return t}},l={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},d={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[a,s],[/\s(opr)\/([\w\.]+)/i],[[a,"Opera"],s],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],[a,s],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[a,"IE"],s],[/(edge)\/((\d+)?[\w\.]+)/i],[a,s],[/(yabrowser)\/([\w\.]+)/i],[[a,"Yandex"],s],[/(comodo_dragon)\/([\w\.]+)/i],[[a,/_/g," "],s],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],[a,s],[/(dolfin)\/([\w\.]+)/i],[[a,"Dolphin"],s],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[a,"Chrome"],s],[/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],[s,[a,"MIUI Browser"]],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],[s,[a,"Android Browser"]],[/FBAV\/([\w\.]+);/i],[s,[a,"Facebook"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[s,[a,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[s,a],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[a,[s,c.str,l.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[a,s],[/(navigator|netscape)\/([\w\.-]+)/i],[[a,"Netscape"],s],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[a,s]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[s,[a,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[a,s],[/rv\:([\w\.]+).*(gecko)/i],[s,a]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[a,s],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[a,[s,c.str,l.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[a,"Windows"],[s,c.str,l.os.windows.version]],[/\((bb)(10);/i],[[a,"BlackBerry"],s],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[a,s],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[a,"Symbian"],s],[/\((series40);/i],[a],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[a,"Firefox OS"],s],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[a,s],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[a,"Chromium OS"],s],[/(sunos)\s?([\w\.]+\d)*/i],[[a,"Solaris"],s],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[a,s],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[a,"iOS"],[s,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[a,"Mac OS"],[s,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[a,s]]},m=function(e){var i=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:t);this.getBrowser=function(){return c.rgx.apply(this,d.browser)},this.getEngine=function(){return c.rgx.apply(this,d.engine)},this.getOS=function(){return c.rgx.apply(this,d.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return i},this.setUA=function(e){return i=e,this},this.setUA(i)};return m}(),n=function(){var t={define_property:function(){return!1}(),create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var i=new XMLHttpRequest;if(i.open("get","/"),"responseType"in i)return i.responseType=t,i.responseType!==t?!1:!0}}catch(n){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==o.browser||o.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;t<r.length;t+=2){for(n=r[t+1].split(/ /),i=0;i<n.length;i++)this.mimes[n[i]]=r[t];this.extensions[r[t]]=n}},extList2mimes:function(t,i){var n,r,o,a,s=this,u=[];for(r=0;r<t.length;r++)for(n=t[r].extensions.split(/\s*,\s*/),o=0;o<n.length;o++){if("*"===n[o])return[];if(a=s.mimes[n[o]],a&&-1===e.inArray(a,u)&&u.push(a),i&&/^\w+$/.test(n[o]))u.push("."+n[o]);else if(!a)return[]}return u},mimes2exts:function(t){var i=this,n=[];return e.each(t,function(t){if("*"===t)return n=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(i.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(n,i.extensions[t])}):i.extensions[t]&&[].push.apply(n,i.extensions[t]))}),n},mimes2extList:function(i){var n=[],r=[];return"string"===e.typeOf(i)&&(i=e.trim(i).split(/\s*,\s*/)),r=this.mimes2exts(i),n.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),n.mimes=i,n},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return n.addMimeType(i),n}),n("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o,a,s,u){function c(t){var o,c,d;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),c=n.get(t.browse_button),!c)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);d={accept:[{title:a.translate("All Files"),extensions:"*"}],multiple:!1,required_caps:!1,container:c.parentNode||document.body},t=e.extend({},d,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=i.mimes2extList(t.accept)),o=n.get(t.container),o||(o=document.body),"static"===n.getStyle(o,"position")&&(o.style.position="relative"),o=c=null,u.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){var i=this;i.bind("RuntimeInit",function(r,o){i.ruid=o.uid,i.shimid=o.shimid,i.bind("Ready",function(){i.trigger("Refresh")},999),i.bind("Refresh",function(){var i,r,a,s,u;a=n.get(t.browse_button),s=n.get(o.shimid),a&&(i=n.getPos(a,n.get(t.container)),r=n.getSize(a),u=parseInt(n.getStyle(a,"z-index"),10)||0,s&&e.extend(s.style,{top:i.y+"px",left:i.x+"px",width:r.w+"px",height:r.h+"px",zIndex:u+1})),s=a=null}),o.exec.call(i,"FileInput","init",t)}),i.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},getOption:function(e){return t[e]},setOption:function(e,n){if(t.hasOwnProperty(e)){var o=t[e];switch(e){case"accept":"string"==typeof n&&(n=i.mimes2extList(n));break;case"container":case"required_caps":throw new r.FileException(r.FileException.NO_MODIFICATION_ALLOWED_ERR)}t[e]=n,this.exec("FileInput","setOption",e,n),this.trigger("OptionChanged",e,n,o)}},disable:function(t){var i=this.getRuntime();i&&this.exec("FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){this.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),n("moxie/file/File",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/file/Blob"],function(e,t,i){function n(n,r){r||(r={}),i.apply(this,arguments),this.type||(this.type=t.getFileMime(r.name));var o;if(r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else if(this.type){var a=this.type.split("/")[0];o=e.guid((""!==a?a:"file")+"_"),t.extensions[this.type]&&(o+="."+t.extensions[this.type][0])}e.extend(this,{name:o||e.guid("file_"),relativePath:"",lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return n.prototype=i.prototype,n}),n("moxie/file/FileDrop",["moxie/core/I18n","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/core/utils/Env","moxie/file/File","moxie/runtime/RuntimeClient","moxie/core/EventTarget","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u){function c(i){var r,o=this;"string"==typeof i&&(i={drop_zone:i}),r={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},i="object"==typeof i?n.extend({},r,i):r,i.container=t.get(i.drop_zone)||document.body,"static"===t.getStyle(i.container,"position")&&(i.container.style.position="relative"),"string"==typeof i.accept&&(i.accept=u.mimes2extList(i.accept)),a.call(o),n.extend(o,{uid:n.guid("uid_"),ruid:null,files:null,init:function(){o.bind("RuntimeInit",function(e,t){o.ruid=t.uid,t.exec.call(o,"FileDrop","init",i),o.dispatchEvent("ready")}),o.connectRuntime(i)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","dragenter","dragleave","drop","error"];return c.prototype=s.instance,c}),n("moxie/file/FileReader",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/Exceptions","moxie/core/EventTarget","moxie/file/Blob","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o){function a(){function n(e,n){if(this.trigger("loadstart"),this.readyState===a.LOADING)return this.trigger("error",new i.DOMException(i.DOMException.INVALID_STATE_ERR)),this.trigger("loadend"),void 0;
-if(!(n instanceof r))return this.trigger("error",new i.DOMException(i.DOMException.NOT_FOUND_ERR)),this.trigger("loadend"),void 0;if(this.result=null,this.readyState=a.LOADING,n.isDetached()){var o=n.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=o;break;case"readAsDataURL":this.result="data:"+n.type+";base64,"+t.btoa(o)}this.readyState=a.DONE,this.trigger("load"),this.trigger("loadend")}else this.connectRuntime(n.ruid),this.exec("FileReader","read",e,n)}o.call(this),e.extend(this,{uid:e.guid("uid_"),readyState:a.EMPTY,result:null,error:null,readAsBinaryString:function(e){n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){n.call(this,"readAsDataURL",e)},readAsText:function(e){n.call(this,"readAsText",e)},abort:function(){this.result=null,-1===e.inArray(this.readyState,[a.EMPTY,a.DONE])&&(this.readyState===a.LOADING&&(this.readyState=a.DONE),this.exec("FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),this.exec("FileReader","destroy"),this.disconnectRuntime(),this.unbindAll()}}),this.handleEventProps(s),this.bind("Error",function(e,t){this.readyState=a.DONE,this.error=t},999),this.bind("Load",function(){this.readyState=a.DONE},999)}var s=["loadstart","progress","load","abort","error","loadend"];return a.EMPTY=0,a.LOADING=1,a.DONE=2,a.prototype=n.instance,a}),n("moxie/core/utils/Url",[],function(){var e=function(t,i){for(var n=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],r=n.length,o={http:80,https:443},a={},s=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,u=s.exec(t||"");r--;)u[r]&&(a[n[r]]=u[r]);if(!a.scheme){i&&"string"!=typeof i||(i=e(i||document.location.href)),a.scheme=i.scheme,a.host=i.host,a.port=i.port;var c="";/^[^\/]/.test(a.path)&&(c=i.path,c=/\/[^\/]*\.[^\/]*$/.test(c)?c.replace(/\/[^\/]+$/,"/"):c.replace(/\/?$/,"/")),a.path=c+(a.path||"")}return a.port||(a.port=o[a.scheme]||80),a.port=parseInt(a.port,10),a.path||(a.path="/"),delete a.source,a},t=function(t){var i={http:80,https:443},n="object"==typeof t?t:e(t);return n.scheme+"://"+n.host+(n.port!==i[n.scheme]?":"+n.port:"")+n.path+(n.query?n.query:"")},i=function(t){function i(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof t&&(t=e(t)),i(e())===i(t)};return{parseUrl:e,resolveUrl:t,hasSameOrigin:i}}),n("moxie/runtime/RuntimeTarget",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i){function n(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return n.prototype=i.instance,n}),n("moxie/file/FileReaderSync",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/utils/Encode"],function(e,t,i){return function(){function n(e,t){if(!t.isDetached()){var n=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),n}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+i.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;s>a;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:y,password:w,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,y,w,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=u||l.user,w=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='<img src="'+d+'" width="'+o.width+'" height="'+o.height+'" />',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){d.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='<input id="'+g.uid+'" type="file" style="font-size:999px;opacity:0;"'+(e.multiple&&g.can("select_multiple")?"multiple":"")+(e.directory&&g.can("select_folder")?"webkitdirectory directory":"")+(d?' accept="'+d.join(",")+'"':"")+" />",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n<e.length;n++)[].push.apply(t,e[n].extensions.split(/\s*,\s*/));return-1===i.inArray("*",t)?t:[]}function u(e){if(!g.length)return!0;var t=o.getFileExtension(e.name);return!t||-1!==i.inArray(t,g)}function c(e,t){var n=[];i.each(e,function(e){var t=e.webkitGetAsEntry();t&&(t.isFile?a(e.getAsFile(),t.fullPath):n.push(t))}),n.length?l(n,t):t()}function l(e,t){var n=[];i.each(e,function(e){n.push(function(t){d(e,t)})}),i.inSeries(n,function(){t()})}function d(e,t){e.isFile?e.file(function(i){a(i,e.fullPath),t()},function(){t()}):e.isDirectory?m(e,t):t()}function m(e,t){function i(e){r.readEntries(function(t){t.length?([].push.apply(n,t),i(e)):e()},e)}var n=[],r=e.createReader();i(function(){l(n,t)})}var h,f,p=[],g=[];i.extend(this,{init:function(t){var n,o=this;h=t,f=o.ruid,g=s(h.accept),n=h.container,r.addEvent(n,"dragover",function(t){e(t)&&(t.preventDefault(),t.dataTransfer.dropEffect="copy")},o.uid),r.addEvent(n,"drop",function(t){e(t)&&(t.preventDefault(),p=[],t.dataTransfer.items&&t.dataTransfer.items[0].webkitGetAsEntry?c(t.dataTransfer.items,function(){o.files=p,o.trigger("drop")}):(i.each(t.dataTransfer.files,function(e){a(e)}),o.files=p,o.trigger("drop")))},o.uid),r.addEvent(n,"dragenter",function(){o.trigger("dragenter")},o.uid),r.addEvent(n,"dragleave",function(){o.trigger("dragleave")},o.uid)},destroy:function(){r.removeAllEvents(h&&n.get(h.container),this.uid),f=p=g=h=null}})}return e.FileDrop=a}),n("moxie/runtime/html5/file/FileReader",["moxie/runtime/html5/Runtime","moxie/core/utils/Encode","moxie/core/utils/Basic"],function(e,t,i){function n(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var n,r=!1;i.extend(this,{read:function(t,o){var a=this;a.result="",n=new window.FileReader,n.addEventListener("progress",function(e){a.trigger(e)}),n.addEventListener("load",function(t){a.result=r?e(n.result):n.result,a.trigger(t)}),n.addEventListener("error",function(e){a.trigger(e,n.error)}),n.addEventListener("loadend",function(e){n=null,a.trigger(e)}),"function"===i.typeOf(n[t])?(r=!1,n[t](o.getSource())):"readAsBinaryString"===t&&(r=!0,n.readAsDataURL(o.getSource()))},abort:function(){n&&n.abort()},destroy:function(){n=null}})}return e.FileReader=n}),n("moxie/runtime/html5/xhr/XMLHttpRequest",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Url","moxie/file/File","moxie/file/Blob","moxie/xhr/FormData","moxie/core/Exceptions","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(e,t){var i,n,r=this;i=t.getBlob().getSource(),n=new window.FileReader,n.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:n.result})),f.send.call(r,e,t)},n.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(i){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,i=e.responseText;return"IE"===u.browser&&i&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(i)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),i="--",n="\r\n",r="",a=this.getRuntime();if(!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return m.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,a){r+=e instanceof o?i+t+n+'Content-Disposition: form-data; name="'+a+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+n+"Content-Type: "+(e.type||"application/octet-stream")+n+n+e.getSource()+n:i+t+n+'Content-Disposition: form-data; name="'+a+'"'+n+n+unescape(encodeURIComponent(e))+n}),r+=i+t+i+n}var m,h,f=this;t.extend(this,{send:function(i,r){var s=this,l="Mozilla"===u.browser&&u.verComp(u.version,4,">=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource();
-else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);m.send(e.buffer)}():m.send(r),s.trigger("loadstart")},getStatus:function(){try{if(m)return m.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var n=new r(t.uid,m.response),o=m.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(h=a[2])}return n.name=h,n.type||(n.type=i.getFileMime(h)),n;case"json":return u.can("return_response_type","json")?m.response:200===m.status&&window.JSON?JSON.parse(m.responseText):null;case"document":return l(m);default:return""!==m.responseText?m.responseText:null}}catch(s){return null}},getAllResponseHeaders:function(){try{return m.getAllResponseHeaders()}catch(e){}return""},abort:function(){m&&m.abort()},destroy:function(){f=h=null}})}return e.XMLHttpRequest=c}),n("moxie/runtime/html5/utils/BinaryReader",["moxie/core/utils/Basic"],function(e){function t(e){e instanceof ArrayBuffer?i.apply(this,arguments):n.apply(this,arguments)}function i(t){var i=new DataView(t);e.extend(this,{readByteAt:function(e){return i.getUint8(e)},writeByteAt:function(e,t){i.setUint8(e,t)},SEGMENT:function(e,n,r){switch(arguments.length){case 2:return t.slice(e,e+n);case 1:return t.slice(e);case 3:if(null===r&&(r=new ArrayBuffer),r instanceof ArrayBuffer){var o=new Uint8Array(this.length()-n+r.byteLength);e>0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<<Math.abs(n+8*r);return i},write:function(e,t,i){var n,r;if(e>this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=y[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n<t.ExifVersion.length;n++)r+=String.fromCharCode(t.ExifVersion[n]);t.ExifVersion=r}}return t},GPS:function(){var t=null;if(d.gpsIFD){try{t=a.call(this,d.gpsIFD,c.gps)}catch(i){return null}t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join("."))}return t},thumb:function(){if(d.IFD1)try{var e=a.call(this,d.IFD1,c.thumb);if("JPEGInterchangeFormat"in e)return this.SEGMENT(d.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(t){}return null},setExif:function(e,t){return"PixelXDimension"!==e&&"PixelYDimension"!==e?!1:s.call(this,"exif",e,t)},clear:function(){u.clear(),o=c=l=h=d=u=null}}),65505!==this.SHORT(0)||"EXIF\0"!==this.STRING(4,5).toUpperCase())throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(this.littleEndian=18761==this.SHORT(m),42!==this.SHORT(m+=2))throw new n.ImageError(n.ImageError.INVALID_META_ERR);d.IFD0=d.tiffHeader+this.LONG(m+=2),h=a.call(this,d.IFD0,c.tiff),"ExifIFDPointer"in h&&(d.exifIFD=d.tiffHeader+h.ExifIFDPointer,delete h.ExifIFDPointer),"GPSInfoIFDPointer"in h&&(d.gpsIFD=d.tiffHeader+h.GPSInfoIFDPointer,delete h.GPSInfoIFDPointer),e.isEmptyObj(h)&&(h=null);var f=this.LONG(d.IFD0+12*this.SHORT(d.IFD0)+2);f&&(d.IFD1=d.tiffHeader+f)}return r.prototype=i.prototype,r}),n("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],function(e,t,i,n,r){function o(o){function a(e){var t,i,n=0;for(e||(e=c);n<=e.length();){if(t=e.SHORT(n+=2),t>=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;i<n.length;i++,t+=2)if(n[i]!=s.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),l=r.call(this),t.extend(this,{type:"image/png",size:s.length(),width:l.width,height:l.height,purge:function(){o.call(this)}}),o.call(this)}return n}),n("moxie/runtime/html5/image/ImageInfo",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEG","moxie/runtime/html5/image/PNG"],function(e,t,i,n){return function(r){var o,a=[i,n];o=function(){for(var e=0;e<a.length;e++)try{return new a[e](r)}catch(i){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){r=null}}),e.extend(this,o),this.purge=function(){o.purge(),o=null}}}),n("moxie/runtime/html5/image/ResizerCanvas",[],function(){function e(i,n){var r=i.width,o=Math.floor(r*n),a=!1;(.5>n||n>2)&&(n=.5>n?.5:2,a=!0);var s=t(i,n);return a?e(s,o/s.width):s}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,w.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t(e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),y=g=v=w=null,b=!1}var g,x,v,y,w,E=this,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return w=e,e.isDetached()?(y=e.getSource(),m.call(this,y),void 0):(h.call(this,e.getSource(),function(e){r&&(y=l(e)),m.call(t,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,w=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&y&&i.can("access_image_binary")&&(x=new a(y)),t={width:e().width||0,height:e().height||0,type:w.type||u.getFileMime(w.name),size:y&&y.length||w.size||0,name:w.name||"",meta:null},R&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),R=n.preserveHeaders,!R){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:w.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:w.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=l(E.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}y=l(i),x&&(y=x.stripHeaders(y),R&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=x.writeHeaders(y)),x.purge(),x=null)}return b=!1,y},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+u.swf_url+'" ',"IE"===t.browser&&(i+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),i+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+u.swf_url+'" />'+'<param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" />'+'<param name="wmode" value="transparent" />'+'<param name="allowscriptaccess" value="always" />'+"</object>","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u<n.length&&r===o);o>=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">'+'<param name="source" value="'+s.xap_url+'"/>'+'<param name="background" value="Transparent"/>'+'<param name="windowless" value="true"/>'+'<param name="enablehtmlaccess" value="true"/>'+'<param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/>'+"</object>",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;i<e.length;i++)t+=(""!==t?"|":"")+e[i].title+" | *."+e[i].extensions.replace(/,/g,";*.");return t}var r={init:function(e){var r=this,o=this.getRuntime();this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],i.each(e,function(e){r.files.push(new t(o.uid,e))})},999),o.shimExec.call(this,"FileInput","init",n(e.accept),e.multiple),this.trigger("ready")},setOption:function(e,t){"accept"==e&&(t=n(t)),this.getRuntime().shimExec.call(this,"FileInput","setOption",e,t)}};return e.FileInput=r}),n("moxie/runtime/silverlight/file/FileDrop",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Dom","moxie/core/utils/Events"],function(e,t,i){var n={init:function(){var e,n=this,r=n.getRuntime();return e=r.getShimContainer(),i.addEvent(e,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},n.uid),i.addEvent(e,"dragenter",function(e){e.preventDefault();var i=t.get(r.uid).dragEnter(e);i&&e.stopPropagation()},n.uid),i.addEvent(e,"drop",function(e){e.preventDefault();var i=t.get(r.uid).dragDrop(e);i&&e.stopPropagation()},n.uid),r.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=n}),n("moxie/runtime/silverlight/file/FileReader",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReader"],function(e,t,i){return e.FileReader=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileReaderSync",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReaderSync"],function(e,t,i){return e.FileReaderSync=t.extend({},i)
-}),n("moxie/runtime/silverlight/runtime/Transporter",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/runtime/Transporter"],function(e,t,i){return e.Transporter=t.extend({},i)}),n("moxie/runtime/silverlight/xhr/XMLHttpRequest",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/xhr/XMLHttpRequest","moxie/runtime/silverlight/file/FileReaderSync","moxie/runtime/silverlight/runtime/Transporter"],function(e,t,i){return e.XMLHttpRequest=t.extend({},i)}),n("moxie/runtime/silverlight/image/Image",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/runtime/flash/image/Image"],function(e,t,i,n){return e.Image=t.extend({},n,{getInfo:function(){var e=this.getRuntime(),n=["tiff","exif","gps","thumb"],r={meta:{}},o=e.shimExec.call(this,"Image","getInfo");return o.meta&&(t.each(n,function(e){var t,i,n,a,s=o.meta[e];if(s&&s.keys)for(r.meta[e]={},i=0,n=s.keys.length;n>i;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&i.extend(d.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return m.parentNode.removeChild(m),void 0}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=t.accept.mimes||o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+f+'_iframe" name="'+f+'_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,y=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)});
-define("../libs/plupload/js/moxie.min", function(){});
-
-/**
- * Plupload - multi-runtime File Uploader
- * v2.2.1
- *
- * Copyright 2013, Moxiecode Systems AB
- * Released under GPL License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- *
- * Date: 2016-11-23
- */
-!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t<i.length;t+=2)e=e.replace(i[t],i[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,"")},buildUrl:function(e,t){var i="";return l.each(t,function(e,t){i+=(i?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),i&&(e+=(e.indexOf("?")>0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t<T.length;t++)e||T[t].status!=l.QUEUED?i++:(e=T[t],this.trigger("BeforeUpload",e)&&(e.status=l.UPLOADING,this.trigger("UploadFile",e)));i==T.length&&(this.state!==l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",T))}}function u(e){e.percent=e.size>0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t;for(w.reset(),e=0;e<T.length;e++)t=T[e],t.size!==i?(w.size+=t.origSize,w.loaded+=t.loaded*t.origSize/t.size):w.size=i,t.status==l.DONE?w.uploaded++:t.status==l.FAILED?w.failed++:w.queued++;w.size===i?w.percent=T.length>0?Math.ceil(100*(w.uploaded/T.length)):0:(w.bytesPerSec=Math.ceil(w.loaded/((+new Date-S||1)/1e3)),w.percent=w.size>0?Math.ceil(100*(w.loaded/w.size)):0)}function c(){var e=A[0]||P[0];return e?e.getRuntime().uid:!1}function f(e,t){if(e.ruid){var i=o.getInfo(e.ruid);if(i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",m),this.bind("UploadFile",E),this.bind("UploadProgress",v),this.bind("StateChanged",b),this.bind("QueueChanged",d),this.bind("Error",z),this.bind("FileUploaded",R),this.bind("Destroy",O)}function g(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,A.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var s=new t.image.Image;try{s.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):(s.downsize(n.width,n.height,n.crop,n.preserve_headers),void 0)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function _(e,i,r){function s(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(a.trigger("Destroy"),g.call(a,I,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function E(e,i){function n(){d-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}))}function s(){var f,g,h,_={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(_.name=i.target_name||i.name),u&&c.chunks&&a.size>u?(h=Math.min(u,a.size-p),f=a.slice(p,p+h)):(h=a.size,f=a),u&&c.chunks&&(e.settings.send_chunk_number?(_.chunk=Math.ceil(p/u),_.chunks=Math.ceil(a.size/u)):(_.offset=p,_.total=a.size)),D=new t.xhr.XMLHttpRequest,D.upload&&(D.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),D.onload=function(){return D.status>=400?(n(),void 0):(d=e.settings.max_retries,h<a.size?(f.destroy(),p+=h,i.loaded=Math.min(p,a.size),e.trigger("ChunkUploaded",i,{offset:i.loaded,total:a.size,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}),"Android Browser"===l.ua.browser&&e.trigger("UploadProgress",i)):i.loaded=i.size,f=g=null,!p||p>=a.size?(i.size!=i.origSize&&(a.destroy(),a=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()})):r(s,1),void 0)},D.onerror=function(){n()},D.onloadend=function(){this.destroy(),D=null},e.settings.multipart&&c.multipart?(D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),g=new t.xhr.FormData,l.each(l.extend(_,e.settings.multipart_params),function(e,t){g.append(t,e)}),g.append(e.settings.file_data_name,f),D.send(g,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(o=l.buildUrl(e.settings.url,l.extend(_,e.settings.multipart_params)),D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),D.hasRequestHeader("Content-Type")||D.setRequestHeader("Content-Type","application/octet-stream"),D.send(f,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var a,o=e.settings.url,u=e.settings.chunk_size,d=e.settings.max_retries,c=e.features,p=0;i.loaded&&(p=i.loaded=u?u*Math.floor(i.loaded/u):0),a=i.getSource(),!l.isEmptyObj(e.settings.resize)&&f(a,"send_binary_string")&&-1!==l.inArray(a.type,["image/jpeg","image/png"])?h.call(this,a,e.settings.resize,function(e){a=e,i.size=e.size,s()}):s()}function v(e,t){u(t)}function b(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function y(){D&&D.abort()}function R(e){d(),r(function(){a.call(e)},1)}function z(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function O(e){e.stop(),l.each(T,function(e){e.destroy()}),T=[],A.length&&(l.each(A,function(e){e.destroy()}),A=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),F={},U=!1,S=D=null,w.reset()}var I,S,w,D,x=l.guid(),T=[],F={},A=[],P=[],U=!1;I={runtimes:o.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},_.call(this,e,null,!0),w=new l.QueueProgress,l.extend(this,{id:x,uid:x,state:l.STOPPED,features:{},runtime:null,files:T,settings:I,total:w,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),p.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?(g.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){_.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){A.length&&l.each(A,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,A.length&&l.each(A,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=T.length-1;t>=0;t--)if(T[t].id===e)return T[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(T.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=T.length-1;i>=0;i--)if(T[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=T.splice(e===i?0:e,t===i?T.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n<t.length;n++)if(t[n].fn.apply(t[n].scope,i)===!1)return!1}return!0},bind:function(e,t,i,n){l.Uploader.prototype.bind.call(this,e,t,n,i)},destroy:function(){this.trigger("Destroy"),I=w=null,this.unbindAll()}})},l.Uploader.prototype=t.core.EventTarget.instance,l.File=function(){function e(e){l.extend(this,{id:l.guid(),name:e.name||e.fileName,type:e.type||"",size:e.size||e.fileSize,origSize:e.size||e.fileSize,loaded:0,percent:0,status:l.QUEUED,lastModifiedDate:e.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return-1!==l.inArray(l.typeOf(e),["blob","file"])?e:null},getSource:function(){return t[this.id]?t[this.id]:null},destroy:function(){var e=this.getSource();e&&(e.destroy(),delete t[this.id])}}),t[this.id]=e}var t={};return e}(),l.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=l}(this,e)});
-define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined, Plupload, Template) {
-    var Upload = {
-        list: {},
-        config: {
-            container: document.body,
-            classname: '.plupload:not([initialized])',
-            previewtpl: '<li class="col-xs-3"><a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"><img src="<%=fullurl%>" class="img-responsive"></a><a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a></li>',
-        },
-        events: {
-            //初始化完成
-            onPostInit: function (up) {
-
-            },
-            //文件添加成功后
-            onFileAdded: function (up, files) {
-                var button = up.settings.button;
-                $(button).data("bakup-html", $(button).html());
-                var maxcount = $(button).data("maxcount");
-                var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
-                maxcount = typeof maxcount !== "undefined" ? maxcount : 0;
-                if (maxcount > 0 && input_id) {
-                    var inputObj = $("#" + input_id);
-                    if (inputObj.size() > 0) {
-                        var value = $.trim(inputObj.val());
-                        var nums = value === '' ? 0 : value.split(/\,/).length;
-                        var remains = maxcount - nums;
-                        if (files.length > remains) {
-                            for (var i = 0; i < files.length; i++) {
-                                up.removeFile(files[i]);
-                            }
-                            Toastr.error(__('You can upload up to %d file%s', remains));
-                            return false;
-                        }
-                    }
-                }
-                //添加后立即上传
-                setTimeout(function () {
-                    up.start();
-                }, 1);
-            },
-            //上传进行中的回调
-            onUploadProgress: function (up, file) {
-
-            },
-            //上传之前的回调
-            onBeforeUpload: function (up, file) {
-
-            },
-            //上传成功的回调
-            onUploadSuccess: function (up, ret) {
-                var button = up.settings.button;
-                var onUploadSuccess = up.settings.onUploadSuccess;
-                var data = typeof ret.data !== 'undefined' ? ret.data : null;
-                //上传成功后回调
-                if (button) {
-                    //如果有文本框则填充
-                    var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
-                    if (input_id) {
-                        var urlArr = [];
-                        var inputObj = $("#" + input_id);
-                        if ($(button).data("multiple") && inputObj.val() !== "") {
-                            urlArr.push(inputObj.val());
-                        }
-                        urlArr.push(data.url);
-                        inputObj.val(urlArr.join(",")).trigger("change");
-                    }
-                    //如果有回调函数
-                    var onDomUploadSuccess = $(button).data("upload-success");
-                    if (onDomUploadSuccess) {
-                        if (typeof onDomUploadSuccess !== 'function' && typeof Upload.api.custom[onDomUploadSuccess] === 'function') {
-                            onDomUploadSuccess = Upload.api.custom[onDomUploadSuccess];
-                        }
-                        if (typeof onDomUploadSuccess === 'function') {
-                            var result = onDomUploadSuccess.call(button, data, ret);
-                            if (result === false)
-                                return;
-                        }
-                    }
-                }
-
-                if (typeof onUploadSuccess === 'function') {
-                    var result = onUploadSuccess.call(button, data, ret);
-                    if (result === false)
-                        return;
-                }
-            },
-            //上传错误的回调
-            onUploadError: function (up, ret) {
-                var button = up.settings.button;
-                var onUploadError = up.settings.onUploadError;
-                var data = typeof ret.data !== 'undefined' ? ret.data : null;
-                if (button) {
-                    var onDomUploadError = $(button).data("upload-error");
-                    if (onDomUploadError) {
-                        if (typeof onDomUploadError !== 'function' && typeof Upload.api.custom[onDomUploadError] === 'function') {
-                            onDomUploadError = Upload.api.custom[onDomUploadError];
-                        }
-                        if (typeof onDomUploadError === 'function') {
-                            var result = onDomUploadError.call(button, data, ret);
-                            if (result === false)
-                                return;
-                        }
-                    }
-                }
-
-                if (typeof onUploadError === 'function') {
-                    var result = onUploadError.call(button, data, ret);
-                    if (result === false) {
-                        return;
-                    }
-                }
-                Toastr.error(ret.msg + "(code:" + ret.code + ")");
-            },
-            //服务器响应数据后
-            onUploadResponse: function (response) {
-                try {
-                    var ret = typeof response === 'object' ? response : JSON.parse(response);
-                    if (!ret.hasOwnProperty('code')) {
-                        $.extend(ret, {code: -2, msg: response, data: null});
-                    }
-                } catch (e) {
-                    var ret = {code: -1, msg: e.message, data: null};
-                }
-                return ret;
-            },
-            //上传全部结束后
-            onUploadComplete: function (up, files) {
-                var button = up.settings.button;
-                var onUploadComplete = up.settings.onUploadComplete;
-                if (button) {
-                    var onDomUploadComplete = $(button).data("upload-complete");
-                    if (onDomUploadComplete) {
-                        if (typeof onDomUploadComplete !== 'function' && typeof Upload.api.custom[onDomUploadComplete] === 'function') {
-                            onDomUploadComplete = Upload.api.custom[onDomUploadComplete];
-                        }
-                        if (typeof onDomUploadComplete === 'function') {
-                            var result = onDomUploadComplete.call(button, files);
-                            if (result === false)
-                                return;
-                        }
-                    }
-                }
-
-                if (typeof onUploadComplete === 'function') {
-                    var result = onUploadComplete.call(button, files);
-                    if (result === false) {
-                        return;
-                    }
-                }
-            }
-        },
-        api: {
-            //Plupload上传
-            plupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
-                element = typeof element === 'undefined' ? Upload.config.classname : element;
-                $(element, Upload.config.container).each(function () {
-                    if ($(this).attr("initialized")) {
-                        return true;
-                    }
-                    $(this).attr("initialized", true);
-                    var that = this;
-                    var id = $(this).prop("id");
-                    var url = $(this).data("url");
-                    var maxsize = $(this).data("maxsize");
-                    var mimetype = $(this).data("mimetype");
-                    var multipart = $(this).data("multipart");
-                    var multiple = $(this).data("multiple");
-
-                    //填充ID
-                    var input_id = $(that).data("input-id") ? $(that).data("input-id") : "";
-                    //预览ID
-                    var preview_id = $(that).data("preview-id") ? $(that).data("preview-id") : "";
-
-                    //上传URL
-                    url = url ? url : Config.upload.uploadurl;
-                    url = Fast.api.fixurl(url);
-                    //最大可上传文件大小
-                    maxsize = typeof maxsize !== "undefined" ? maxsize : Config.upload.maxsize;
-                    //文件类型
-                    mimetype = typeof mimetype !== "undefined" ? mimetype : Config.upload.mimetype;
-                    //请求的表单参数
-                    multipart = typeof multipart !== "undefined" ? multipart : Config.upload.multipart;
-                    //是否支持批量上传
-                    multiple = typeof multiple !== "undefined" ? multiple : Config.upload.multiple;
-                    var mimetypeArr = new Array();
-                    //支持后缀和Mimetype格式,以,分隔
-                    if (mimetype && mimetype !== "*" && mimetype.indexOf("/") === -1)
-                    {
-                        var tempArr = mimetype.split(',');
-                        for (var i = 0; i < tempArr.length; i++)
-                        {
-                            mimetypeArr.push({title: __('Files'), extensions: tempArr[i]});
-                        }
-                        mimetype = mimetypeArr;
-                    }
-                    //生成Plupload实例
-                    Upload.list[id] = new Plupload.Uploader({
-                        runtimes: 'html5,flash,silverlight,html4',
-                        multi_selection: multiple, //是否允许多选批量上传
-                        browse_button: id, // 浏览按钮的ID
-                        container: $(this).parent().get(0), //取按钮的上级元素
-                        flash_swf_url: '/assets/libs/plupload/js/Moxie.swf',
-                        silverlight_xap_url: '/assets/libs/plupload/js/Moxie.xap',
-                        filters: {
-                            max_file_size: maxsize,
-                            mime_types: mimetype,
-                        },
-                        url: url,
-                        multipart_params: $.isArray(multipart) ? {} : multipart,
-                        init: {
-                            PostInit: Upload.events.onPostInit,
-                            FilesAdded: Upload.events.onFileAdded,
-                            BeforeUpload: Upload.events.onBeforeUpload,
-                            UploadProgress: function (up, file) {
-                                var button = up.settings.button;
-                                $(button).prop("disabled", true).html("<i class='fa fa-upload'></i> " + __('Upload') + file.percent + "%");
-                                Upload.events.onUploadProgress(up, file);
-                            },
-                            FileUploaded: function (up, file, info) {
-                                var button = up.settings.button;
-                                //还原按钮文字及状态
-                                $(button).prop("disabled", false).html($(button).data("bakup-html"));
-                                var ret = Upload.events.onUploadResponse(info.response, info, up, file);
-                                file.ret = ret;
-                                if (ret.code === 1) {
-                                    Upload.events.onUploadSuccess(up, ret, file);
-                                } else {
-                                    Upload.events.onUploadError(up, ret, file);
-                                }
-                            },
-                            UploadComplete: Upload.events.onUploadComplete,
-                            Error: function (up, err) {
-                                var button = up.settings.button;
-                                $(button).prop("disabled", false).html($(button).data("bakup-html"));
-                                var ret = {code: err.code, msg: err.message, data: null};
-                                Upload.events.onUploadError(up, ret);
-                            }
-                        },
-                        onUploadSuccess: onUploadSuccess,
-                        onUploadError: onUploadError,
-                        onUploadComplete: onUploadComplete,
-                        button: that
-                    });
-
-                    //拖动排序
-                    if (preview_id && multiple) {
-                        require(['dragsort'], function () {
-                            $("#" + preview_id).dragsort({
-                                dragSelector: "li",
-                                dragEnd: function () {
-                                    $("#" + preview_id).trigger("fa.preview.change");
-                                },
-                                placeHolderTemplate: '<li class="col-xs-3"></li>'
-                            });
-                        });
-                    }
-                    if (preview_id && input_id) {
-                        $(document.body).on("keyup change", "#" + input_id, function () {
-                            var inputStr = $("#" + input_id).val();
-                            var inputArr = inputStr.split(/\,/);
-                            $("#" + preview_id).empty();
-                            var tpl = $("#" + preview_id).data("template") ? $("#" + preview_id).data("template") : "";
-                            $.each(inputArr, function (i, j) {
-                                if (!j) {
-                                    return true;
-                                }
-                                var data = {url: j, fullurl: Fast.api.cdnurl(j), data: $(that).data()};
-                                var html = tpl ? Template(tpl, data) : Template.render(Upload.config.previewtpl, data);
-                                $("#" + preview_id).append(html);
-                            });
-                        });
-                        $("#" + input_id).trigger("change");
-                    }
-                    if (preview_id) {
-                        // 监听事件
-                        $(document.body).on("fa.preview.change", "#" + preview_id, function () {
-                            var urlArr = new Array();
-                            $("#" + preview_id + " [data-url]").each(function (i, j) {
-                                urlArr.push($(this).data("url"));
-                            });
-                            if (input_id) {
-                                $("#" + input_id).val(urlArr.join(","));
-                            }
-                        });
-                        // 移除按钮事件
-                        $(document.body).on("click", "#" + preview_id + " .btn-trash", function () {
-                            $(this).closest("li").remove();
-                            $("#" + preview_id).trigger("fa.preview.change");
-                        });
-                    }
-                    Upload.list[id].init();
-                });
-            },
-            // AJAX异步上传
-            send: function (file, onUploadSuccess, onUploadError, onUploadComplete) {
-                var index = Layer.msg(__('Uploading'), {offset: 't', time: 0});
-                var id = Plupload.guid();
-                var _onPostInit = Upload.events.onPostInit;
-                Upload.events.onPostInit = function () {
-                    // 当加载完成后添加文件并上传
-                    Upload.list[id].addFile(file);
-                    //Upload.list[id].start();
-                };
-                $('<button type="button" id="' + id + '" class="btn btn-danger hidden plupload" />').appendTo("body");
-                $("#" + id).data("upload-complete", function (files) {
-                    Upload.events.onPostInit = _onPostInit;
-                    Layer.close(index);
-                });
-                Upload.api.plupload("#" + id, onUploadSuccess, onUploadError, onUploadComplete);
-            },
-            custom: {
-                //自定义上传完成回调
-                afteruploadcallback: function (response) {
-                    console.log(this, response);
-                    alert("Custom Callback,Response URL:" + response.url);
-                },
-            },
-        }
-    };
-
-    return Upload;
-});
-/*! nice-validator 1.1.3
- * (c) 2012-2017 Jony Zhang <niceue@live.com>, MIT Licensed
- * https://github.com/niceue/nice-validator
- */
-;(function(factory) {
-    typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) :
-    typeof define === 'function' && define.amd ? define('validator-core',['jquery'], factory) :
-    factory(jQuery);
-}(function($, undefined) {
-    "use strict";
-
-    var NS = 'validator',
-        CLS_NS = '.' + NS,
-        CLS_NS_RULE = '.rule',
-        CLS_NS_FIELD = '.field',
-        CLS_NS_FORM = '.form',
-        CLS_WRAPPER = 'nice-' + NS,
-        CLS_MSG_BOX = 'msg-box',
-        ARIA_INVALID = 'aria-invalid',
-        DATA_RULE = 'data-rule',
-        DATA_MSG = 'data-msg',
-        DATA_TIP = 'data-tip',
-        DATA_OK = 'data-ok',
-        DATA_TIMELY = 'data-timely',
-        DATA_TARGET = 'data-target',
-        DATA_DISPLAY = 'data-display',
-        DATA_MUST = 'data-must',
-        NOVALIDATE = 'novalidate',
-        INPUT_SELECTOR = ':verifiable',
-
-        rRules = /(&)?(!)?\b(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?\s*(;|\|)?/g,
-        rRule = /(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?/,
-        rDisplay = /(?:([^:;\(\[]*):)?(.*)/,
-        rDoubleBytes = /[^\x00-\xff]/g,
-        rPos = /top|right|bottom|left/,
-        rAjaxType = /(?:(cors|jsonp):)?(?:(post|get):)?(.+)/i,
-        rUnsafe = /[<>'"`\\]|&#x?\d+[A-F]?;?|%3[A-F]/gmi,
-
-        noop = $.noop,
-        proxy = $.proxy,
-        trim = $.trim,
-        isFunction = $.isFunction,
-        isString = function(s) {
-            return typeof s === 'string';
-        },
-        isObject = function(o) {
-            return o && Object.prototype.toString.call(o) === '[object Object]';
-        },
-        isIE = document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1),
-        attr = function(el, key, value) {
-            if (!el || !el.tagName) return null;
-            if (value !== undefined) {
-                if (value === null) el.removeAttribute(key);
-                else el.setAttribute(key, '' + value);
-            } else {
-                return el.getAttribute(key);
-            }
-        },
-        novalidateonce,
-        preinitialized = {},
-
-        defaults = {
-            debug: 0,
-            theme: 'default',
-            ignore: '',
-            focusInvalid: true,
-            focusCleanup: false,
-            stopOnError: false,
-            beforeSubmit: null,
-            valid: null,
-            invalid: null,
-            validation: null,
-            formClass: 'n-default',
-            validClass: 'n-valid',
-            invalidClass: 'n-invalid',
-            bindClassTo: null
-        },
-        fieldDefaults = {
-            timely: 1,
-            display: null,
-            target: null,
-            ignoreBlank: false,
-            showOk: true,
-            // Translate ajax response to validation result
-            dataFilter: function (data) {
-                if ( isString(data) || ( isObject(data) && ('error' in data || 'ok' in data) ) ) {
-                    return data;
-                }
-            },
-            msgMaker: function(opt) {
-                var html;
-                html = '<span role="alert" class="msg-wrap n-'+ opt.type + '">' + opt.arrow;
-                if (opt.result) {
-                    $.each(opt.result, function(i, obj){
-                        html += '<span class="n-'+ obj.type +'">' + opt.icon + '<span class="n-msg">' + obj.msg + '</span></span>';
-                    });
-                } else {
-                    html += opt.icon + '<span class="n-msg">' + opt.msg + '</span>';
-                }
-                html += '</span>';
-                return html;
-            },
-            msgWrapper: 'span',
-            msgArrow: '',
-            msgIcon: '<span class="n-icon"></span>',
-            msgClass: 'n-right',
-            msgStyle: '',
-            msgShow: null,
-            msgHide: null
-        },
-        themes = {};
-
-    /** jQuery Plugin
-     * @param {Object} options
-        debug         {Boolean}     0               Whether to enable debug mode
-        timely        {Number}      1               Whether to enable timely validation
-        theme         {String}     'default'        Theme name
-        stopOnError   {Boolean}     false           Whether to stop validate when found an error input
-        focusCleanup  {Boolean}     false           Whether to clean up the field message when focus the field
-        focusInvalid  {Boolean}     true            Whether to focus the field that is invalid
-        ignoreBlank   {Boolean}     false           When the field has no value, whether to ignore validation
-        ignore        {jqSelector}    ''            Ignored fields (Using jQuery selector)
-
-        beforeSubmit  {Function}                    Do something before submit form
-        dataFilter    {Function}                    Convert ajax results
-        valid         {Function}                    Triggered when the form is valid
-        invalid       {Function}                    Triggered when the form is invalid
-        validClass    {String}      'n-valid'       Add this class name to a valid field
-        invalidClass  {String}      'n-invalid'     Add this class name to a invalid field
-        bindClassTo   {jqSelector}  ':verifiable'   Which element should the className binding to
-
-        display       {Function}                    Callback function to get dynamic display
-        target        {Function}                    Callback function to get dynamic target
-        msgShow       {Function}                    Trigger this callback when show message
-        msgHide       {Function}                    Trigger this callback when hide message
-        msgWrapper    {String}      'span'          Message wrapper tag name
-        msgMaker      {Function}                    Callback function to make message HTML
-        msgArrow      {String}                      Message arrow template
-        msgIcon       {String}                      Message icon template
-        msgStyle      {String}                      Custom message css style
-        msgClass      {String}                      Additional added to the message class names
-        formClass     {String}                      Additional added to the form class names
-
-        messages      {Object}                      Custom messages for the current instance
-        rules         {Object}                      Custom rules for the current instance
-        fields        {Object}                      Field validation configuration
-        {String}        key    name|#id
-        {String|Object} value                       Rule string or an object which can pass more arguments
-
-        fields[key][rule]       {String}            Rule string
-        fields[key][display]    {String|Function}
-        fields[key][tip]        {String}            Custom tip message
-        fields[key][ok]         {String}            Custom success message
-        fields[key][msg]        {Object}            Custom error message
-        fields[key][msgStyle]   {String}            Custom message style
-        fields[key][msgClass]   {String}            A className which added to message placeholder element
-        fields[key][msgWrapper] {String}            Tag name of the message placeholder element
-        fields[key][msgMaker]   {Function}          A function to custom message HTML
-        fields[key][dataFilter] {Function}          A function to convert ajax results
-        fields[key][valid]      {Function}          A function triggered when field is valid
-        fields[key][invalid]    {Function}          A function triggered when field is invalid
-        fields[key][must]       {Boolean}           If set true, we always check the field even has remote checking
-        fields[key][timely]     {Boolean}           Whether to enable timely validation
-        fields[key][target]     {jqSelector}        Define placement of a message
-     */
-    $.fn.validator = function(options) {
-        var that = this,
-            args = arguments;
-
-        if (that.is(INPUT_SELECTOR)) return that;
-        if (!that.is('form')) that = this.find('form');
-        if (!that.length) that = this;
-
-        that.each(function() {
-            var instance = $(this).data(NS);
-
-            if (instance) {
-                if ( isString(options) ) {
-                    if ( options.charAt(0) === '_' ) return;
-                    instance[options].apply(instance, [].slice.call(args, 1));
-                }
-                else if (options) {
-                    instance._reset(true);
-                    instance._init(this, options);
-                }
-            } else {
-                new Validator(this, options);
-            }
-        });
-
-        return this;
-    };
-
-
-    // Validate a field, or an area
-    $.fn.isValid = function(callback, hideMsg) {
-        var me = _getInstance(this[0]),
-            hasCallback = isFunction(callback),
-            ret, opt;
-
-        if (!me) return true;
-        if (!hasCallback && hideMsg === undefined) hideMsg = callback;
-        me.checkOnly = !!hideMsg;
-        opt = me.options;
-
-        ret = me._multiValidate(
-            this.is(INPUT_SELECTOR) ? this : this.find(INPUT_SELECTOR),
-            function(isValid){
-                if (!isValid && opt.focusInvalid && !me.checkOnly) {
-                    // navigate to the error element
-                    me.$el.find('[' + ARIA_INVALID + ']:first').focus();
-                }
-                if (hasCallback) {
-                    if (callback.length) {
-                        callback(isValid);
-                    } else if (isValid) {
-                        callback();
-                    }
-                }
-                me.checkOnly = false;
-            }
-        );
-
-        // If you pass a callback, we maintain the jQuery object chain
-        return hasCallback ? this : ret;
-    };
-
-    $.extend($.expr.pseudos || $.expr[':'], {
-        // A faster selector than ":input:not(:submit,:button,:reset,:image,:disabled,[contenteditable])"
-        verifiable: function(elem) {
-            var name = elem.nodeName.toLowerCase();
-
-            return ( name === 'input' && !({submit: 1, button: 1, reset: 1, image: 1})[elem.type] ||
-                     name === 'select' ||
-                     name === 'textarea' ||
-                     elem.contentEditable === 'true'
-                    ) && !elem.disabled;
-        },
-        // any value, but not only whitespace
-        filled: function(elem) {
-            return !!trim($(elem).val());
-        }
-    });
-
-    /**
-     * Creates a new Validator
-     *
-     * @class
-     * @param {Element} element - form element
-     * @param {Object}  options - options for validator
-     */
-    function Validator(element, options) {
-        var me = this;
-
-        if ( !(me instanceof Validator) ) {
-            return new Validator(element, options);
-        }
-
-        if (Validator.pending) {
-            $(window).on('validatorready', init);
-        } else {
-            init();
-        }
-
-        function init() {
-            me.$el = $(element);
-            if (me.$el.length) {
-                me._init(me.$el[0], options);
-            }
-            else if (isString(element)) {
-                preinitialized[element] = options;
-            }
-        }
-    }
-
-    Validator.prototype = {
-        _init: function(element, options) {
-            var me = this,
-                opt, themeOpt, dataOpt;
-
-            // Initialization options
-            if ( isFunction(options) ) {
-                options = {
-                    valid: options
-                };
-            }
-            options = me._opt = options || {};
-            dataOpt = attr(element, 'data-'+ NS +'-option');
-            dataOpt = me._dataOpt = dataOpt && dataOpt.charAt(0) === '{' ? (new Function("return " + dataOpt))() : {};
-            themeOpt = me._themeOpt = themes[ options.theme || dataOpt.theme || defaults.theme ];
-            opt = me.options = $.extend({}, defaults, fieldDefaults, themeOpt, me.options, options, dataOpt);
-
-            me.rules = new Rules(opt.rules, true);
-            me.messages = new Messages(opt.messages, true);
-            me.Field = _createFieldFactory(me);
-            me.elements = me.elements || {};
-            me.deferred = {};
-            me.errors = {};
-            me.fields = {};
-            // Initialization fields
-            me._initFields(opt.fields);
-
-            // Initialization events and make a cache
-            if ( !me.$el.data(NS) ) {
-                me.$el.data(NS, me).addClass(CLS_WRAPPER +' '+ opt.formClass)
-                    .on('form-submit-validate', function(e, a, $form, opts, veto) {
-                        me.vetoed = veto.veto = !me.isValid;
-                        me.ajaxFormOptions = opts;
-                    })
-                    .on('submit'+ CLS_NS +' validate'+ CLS_NS, proxy(me, '_submit'))
-                    .on('reset'+ CLS_NS, proxy(me, '_reset'))
-                    .on('showmsg'+ CLS_NS, proxy(me, '_showmsg'))
-                    .on('hidemsg'+ CLS_NS, proxy(me, '_hidemsg'))
-                    .on('focusin'+ CLS_NS + ' click'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusin'))
-                    .on('focusout'+ CLS_NS +' validate'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusout'))
-                    .on('keyup'+ CLS_NS +' input'+ CLS_NS + ' compositionstart compositionend', INPUT_SELECTOR, proxy(me, '_focusout'))
-                    .on('click'+ CLS_NS, ':radio,:checkbox', 'click', proxy(me, '_focusout'))
-                    .on('change'+ CLS_NS, 'select,input[type="file"]', 'change', proxy(me, '_focusout'));
-
-                // cache the novalidate attribute value
-                me._NOVALIDATE = attr(element, NOVALIDATE);
-                // Initialization is complete, stop off default HTML5 form validation
-                // If use "jQuery.attr('novalidate')" in IE7 will complain: "SCRIPT3: Member not found."
-                attr(element, NOVALIDATE, NOVALIDATE);
-            }
-
-            // Display all messages in target container
-            if ( isString(opt.target) ) {
-                me.$el.find(opt.target).addClass('msg-container');
-            }
-        },
-
-        // Guess whether the form use ajax submit
-        _guessAjax: function(form) {
-            var me = this;
-
-            if ( !(me.isAjaxSubmit = !!me.options.valid) ) {
-                // if there is a "valid.form" event
-                var events = ($._data || $.data)(form, "events");
-                me.isAjaxSubmit = issetEvent(events, 'valid', 'form') || issetEvent(events, 'submit', 'form-plugin');
-            }
-
-            function issetEvent(events, name, namespace) {
-                if ( events && events[name] &&
-                     $.map(events[name], function(e){
-                        return ~e.namespace.indexOf(namespace) ? 1 : null;
-                     }).length
-                ) {
-                    return true;
-                }
-                return false;
-            }
-        },
-
-        _initFields: function(fields) {
-            var me = this, k, arr, i,
-                clear = fields === null;
-
-            // Processing field information
-            if (clear) fields = me.fields;
-
-            if ( isObject(fields) ) {
-                for (k in fields) {
-                    if (~k.indexOf(',')) {
-                        arr = k.split(',');
-                        i = arr.length;
-                        while (i--) {
-                            initField(trim(arr[i]), fields[k]);
-                        }
-                    } else {
-                        initField(k, fields[k]);
-                    }
-                }
-            }
-
-            // Parsing DOM rules
-            me.$el.find(INPUT_SELECTOR).each(function() {
-                me._parse(this);
-            });
-
-            function initField(k, v) {
-                // delete a field from settings
-                if ( v === null || clear ) {
-                    var el = me.elements[k];
-                    if (el) me._resetElement(el, true);
-                    delete me.fields[k];
-                } else {
-                    me.fields[k] = new me.Field(k, isString(v) ? {rule: v} : v, me.fields[k]);
-                }
-            }
-        },
-
-        // Parsing a field
-        _parse: function(el) {
-            var me = this,
-                field,
-                key = el.name,
-                display,
-                timely,
-                dataRule = attr(el, DATA_RULE);
-
-            dataRule && attr(el, DATA_RULE, null);
-
-            // If the field has passed the key as id mode, or it doesn't has a name
-            if ( el.id && (
-                ('#' + el.id in me.fields) ||
-                !key ||
-                // If dataRule and element are diffrent from old's, we use ID mode.
-                (dataRule !== null && (field = me.fields[key]) && dataRule !== field.rule && el.id !== field.key)
-                )
-            ) {
-                key = '#' + el.id;
-            }
-            // Generate id
-            if (!key) {
-                key = '#' + (el.id = 'N' + String(Math.random()).slice(-12));
-            }
-
-            field = me.getField(key, true);
-            // The priority of passing parameter by DOM is higher than by JS.
-            field.rule = dataRule || field.rule;
-
-            if (display = attr(el, DATA_DISPLAY)) {
-                field.display = display;
-            }
-            if (field.rule) {
-                if ( attr(el, DATA_MUST) !== null || /\b(?:match|checked)\b/.test(field.rule) ) {
-                    field.must = true;
-                }
-                if ( /\brequired\b/.test(field.rule) ) {
-                    field.required = true;
-                }
-                if (timely = attr(el, DATA_TIMELY)) {
-                    field.timely = +timely;
-                } else if (field.timely > 3) {
-                    attr(el, DATA_TIMELY, field.timely);
-                }
-                me._parseRule(field);
-                field.old = {};
-            }
-            if ( isString(field.target) ) {
-                attr(el, DATA_TARGET, field.target);
-            }
-            if ( isString(field.tip) ) {
-                attr(el, DATA_TIP, field.tip);
-            }
-
-            return me.fields[key] = field;
-        },
-
-        // Parsing field rules
-        _parseRule: function(field) {
-            var arr = rDisplay.exec(field.rule);
-
-            if (!arr) return;
-            // current rule index
-            field._i = 0;
-            if (arr[1]) {
-                field.display = arr[1];
-            }
-            if (arr[2]) {
-                field._rules = [];
-                arr[2].replace(rRules, function(){
-                    var args = arguments;
-                    args[4] = args[4] || args[5];
-                    field._rules.push({
-                        and: args[1] === "&",
-                        not: args[2] === "!",
-                        or: args[6] === "|",
-                        method: args[3],
-                        params: args[4] ? $.map( args[4].split(', '), trim ) : undefined
-                    });
-                });
-            }
-        },
-
-        // Verify a zone
-        _multiValidate: function($inputs, doneCallback){
-            var me = this,
-                opt = me.options;
-
-            me.hasError = false;
-
-            if (opt.ignore) {
-                $inputs = $inputs.not(opt.ignore);
-            }
-
-            $inputs.each(function() {
-                me._validate(this);
-                if (me.hasError && opt.stopOnError) {
-                    // stop the validation
-                    return false;
-                }
-            });
-
-            // Need to wait for all fields validation complete, especially asynchronous validation
-            if (doneCallback) {
-                me.validating = true;
-                $.when.apply(
-                    null,
-                    $.map(me.deferred, function(v){return v;})
-                ).done(function(){
-                    doneCallback.call(me, !me.hasError);
-                    me.validating = false;
-                });
-            }
-
-            // If the form does not contain asynchronous validation, the return value is correct.
-            // Otherwise, you should detect form validation result through "doneCallback".
-            return !$.isEmptyObject(me.deferred) ? undefined : !me.hasError;
-        },
-
-        // Validate the whole form
-        _submit: function(e) {
-            var me = this,
-                opt = me.options,
-                form = e.target,
-                canSubmit = e.type === 'submit' && form.tagName === 'FORM' && !e.isDefaultPrevented();
-
-            e.preventDefault();
-
-            if (
-                novalidateonce && ~(novalidateonce = false) ||
-                // Prevent duplicate submission
-                me.submiting ||
-                // Receive the "validate" event only from the form.
-                e.type === 'validate' && me.$el[0] !== form ||
-                // trigger the beforeSubmit callback.
-                isFunction(opt.beforeSubmit) && opt.beforeSubmit.call(me, form) === false
-            ) {
-                return;
             }
 
-            if (me.isAjaxSubmit === undefined) {
-                me._guessAjax(form);
+            if ( (field = me.fields[key]) || must && (field = new me.Field(key)) ) {
+                field.element = el;
             }
 
-            me._debug('log', '\n<<< event: ' + e.type);
-
-            me._reset();
-            me.submiting = true;
-
-            me._multiValidate(
-                me.$el.find(INPUT_SELECTOR),
-                function(isValid){
-                    var ret = (isValid || opt.debug === 2) ? 'valid' : 'invalid',
-                        errors;
-
-                    if (!isValid) {
-                        if (opt.focusInvalid) {
-                            // navigate to the error element
-                            me.$el.find('[' + ARIA_INVALID + ']:first').focus();
-                        }
-                        errors = $.map(me.errors, function(err){return err;});
-                    }
+            return field;
+        },
 
-                    // releasing submit
-                    me.submiting = false;
-                    me.isValid = isValid;
+        /**
+         * Config a field
+         *
+         * @method: setField
+         * @param {String} key
+         * @param {Object} obj
+         */
+        setField: function(key, obj) {
+            var fields = {};
 
-                    // trigger callback and event
-                    isFunction(opt[ret]) && opt[ret].call(me, form, errors);
-                    me.$el.trigger(ret + CLS_NS_FORM, [form, errors]);
+            if (!key) return;
 
-                    me._debug('log', '>>> ' + ret);
+            // update this field
+            if (isString(key)) {
+                fields[key] = obj;
+            }
+            // update fields
+            else {
+                fields = key;
+            }
 
-                    if (!isValid) return;
-                    // For jquery.form plugin
-                    if (me.vetoed) {
-                        $(form).ajaxSubmit(me.ajaxFormOptions);
-                    }
-                    else if (canSubmit && !me.isAjaxSubmit) {
-                        document.createElement('form').submit.call(form);
-                    }
-                }
-            );
+            this._initFields(fields);
         },
 
-        _reset: function(e) {
-            var me = this;
-
-            me.errors = {};
-            if (e) {
-                me.reseting = true;
-                me.$el.find(INPUT_SELECTOR).each( function(){
-                    me._resetElement(this);
-                });
-                delete me.reseting;
+        /**
+         * Detecting whether the form is valid
+         *
+         * @method isFormValid
+         * @return {Boolean}
+         */
+        isFormValid: function() {
+            var fields = this.fields, k, field;
+            for (k in fields) {
+                field = fields[k];
+                if (!field._rules || !field.required && !field.must && !field.value) continue;
+                if (!field.isValid) return false;
             }
+            return true;
         },
 
-        _resetElement: function(el, all) {
-            this._setClass(el, null);
-            this.hideMsg(el);
+        /**
+         * Prevent submission form
+         *
+         * @method holdSubmit
+         * @param {Boolean} hold - If set to false, will release the hold
+         */
+        holdSubmit: function(hold) {
+            this.submiting = hold === undefined || hold;
         },
 
-        // Handle events: "focusin/click"
-        _focusin: function(e) {
-            var me = this,
-                opt = me.options,
-                el = e.target,
-                timely,
-                msg;
-
-            if ( me.validating || ( e.type==='click' && document.activeElement === el ) ) {
-                return;
-            }
-
-            if (opt.focusCleanup) {
-                if ( attr(el, ARIA_INVALID) === 'true' ) {
-                    me._setClass(el, null);
-                    me.hideMsg(el);
-                }
-            }
-
-            msg = attr(el, DATA_TIP);
-
-            if (msg) {
-                me.showMsg(el, {
-                    type: 'tip',
-                    msg: msg
-                });
-            } else {
-                if (attr(el, DATA_RULE)) {
-                    me._parse(el);
-                }
-                if (timely = attr(el, DATA_TIMELY)) {
-                    if ( timely === 8 || timely === 9 ) {
-                        me._focusout(e);
-                    }
-                }
-            }
+        /**
+         * Clean validation messages
+         *
+         * @method cleanUp
+         */
+        cleanUp: function() {
+            this._reset(1);
         },
 
-        // Handle events: "focusout/validate/keyup/click/change/input/compositionstart/compositionend"
-        _focusout: function(e) {
-            var me = this,
-                opt = me.options,
-                el = e.target,
-                etype = e.type,
-                etype0,
-                focusin = etype === 'focusin',
-                special = etype === 'validate',
-                elem,
-                field,
-                old,
-                value,
-                timestamp,
-                key, specialKey,
-                timely,
-                timer = 0;
-
-            if (etype === 'compositionstart') {
-                me.pauseValidate = true;
-            }
-            if (etype === 'compositionend') {
-                me.pauseValidate = false;
-            }
-            if (me.pauseValidate) {
-                return;
-            }
+        /**
+         * Destroy the validation
+         *
+         * @method destroy
+         */
+        destroy: function() {
+            this._reset(1);
+            this.$el.off(CLS_NS).removeData(NS);
+            attr(this.$el[0], NOVALIDATE, this._NOVALIDATE);
+        }
+    };
 
-            // For checkbox and radio
-            elem = el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]').get(0) : el;
-            // Get field
-            if (!(field = me.getField(elem)) || !field.rule) {
-                return;
+    /**
+     * Create Field Factory
+     *
+     * @class
+     * @param  {Object}     context
+     * @return {Function}   Factory
+     */
+    function _createFieldFactory(context) {
+        function FieldFactory() {
+            var options = this.options;
+            for (var i in options) {
+                if (i in fieldDefaults) this[i] = options[i];
             }
-            // Cache event type
-            etype0 = field._e;
-            field._e = etype;
-            timely = field.timely;
-
-            if (!special) {
-                if (!timely || (_checkable(el) && etype !== 'click')) {
-                    return;
-                }
-
-                value = field.getValue();
-
-                // not validate field unless fill a value
-                if ( field.ignoreBlank && !value && !focusin ) {
-                    me.hideMsg(el);
-                    return;
-                }
-
-                if ( etype === 'focusout' ) {
-                    if (etype0 === 'change') {
-                        return;
-                    }
-                    if ( timely === 2 || timely === 8 ) {
-                        old = field.old;
-                        if (value && old) {
-                            if (field.isValid && !old.showOk) {
-                                me.hideMsg(el);
-                            } else {
-                                me._makeMsg(el, field, old);
-                            }
-                        } else {
-                            return;
-                        }
-                    }
-                }
-                else {
-                    if ( timely < 2 && !e.data ) {
-                        return;
+            $.extend(this, {
+                _valHook: function() {
+                    return this.element.contentEditable === 'true' ? 'text' : 'val';
+                },
+                getValue: function() {
+                    var elem = this.element;
+                    if (elem.type === "number" && elem.validity && elem.validity.badInput) {
+                        return 'NaN';
                     }
+                    return  $(elem)[this._valHook()]();
+                },
+                setValue: function(value) {
+                    $(this.element)[this._valHook()](this.value = value);
+                },
+                // Get a range of validation messages
+                getRangeMsg: function(value, params, suffix) {
+                    if (!params) return;
 
-                    // mark timestamp to reduce the frequency of the received event
-                    timestamp = +new Date();
-                    if ( timestamp - (el._ts || 0) < 100 ) {
-                        return;
+                    var me = this,
+                        msg = me.messages[me._r] || '',
+                        result,
+                        p = params[0].split('~'),
+                        e = params[1] === 'false',
+                        a = p[0],
+                        b = p[1],
+                        c = 'rg',
+                        args = [''],
+                        isNumber = trim(value) && +value === +value;
+
+                    function compare(large, small) {
+                        return !e ? large >= small : large > small;
                     }
-                    el._ts = timestamp;
 
-                    // handle keyup
-                    if ( etype === 'keyup' ) {
-                        if (etype0 === 'input') {
-                            return;
+                    if (p.length === 2) {
+                        if (a && b) {
+                            if (isNumber && compare(value, +a) && compare(+b, value)) {
+                                result = true;
+                            }
+                            args = args.concat(p);
+                            c = e ? 'gtlt' : 'rg';
                         }
-                        key = e.keyCode;
-                        specialKey = {
-                            8: 1,  // Backspace
-                            9: 1,  // Tab
-                            16: 1, // Shift
-                            32: 1, // Space
-                            46: 1  // Delete
-                        };
-
-                        // only gets focus, no validation
-                        if ( key === 9 && !value ) {
-                            return;
+                        else if (a && !b) {
+                            if (isNumber && compare(value, +a)) {
+                                result = true;
+                            }
+                            args.push(a);
+                            c = e ? 'gt' : 'gte';
                         }
-
-                        // do not validate, if triggered by these keys
-                        if ( key < 48 && !specialKey[key] ) {
-                            return;
+                        else if (!a && b) {
+                            if (isNumber && compare(+b, value)) {
+                                result = true;
+                            }
+                            args.push(b);
+                            c = e ? 'lt' : 'lte';
                         }
                     }
-                    if ( !focusin ) {
-                        // keyboard events, reducing the frequency of validation
-                        timer = timely <100 ?  (etype === 'click' || el.tagName === 'SELECT') ? 0 : 400 : timely;
+                    else {
+                        if (value === +a) {
+                            result = true;
+                        }
+                        args.push(a);
+                        c = 'eq';
                     }
-                }
-            }
-
-            // if the current field is ignored
-            if ( opt.ignore && $(el).is(opt.ignore) ) {
-                return;
-            }
 
-            clearTimeout(field._t);
+                    if (msg) {
+                        if (suffix && msg[c + suffix]) {
+                            c += suffix;
+                        }
+                        args[0] = msg[c];
+                    }
 
-            if (timer) {
-                field._t = setTimeout(function() {
-                    me._validate(el, field);
-                }, timer);
-            } else {
-                if (special) field.old = {};
-                me._validate(el, field);
-            }
-        },
+                    return result || me._rules && ( me._rules[me._i].msg = me.renderMsg.apply(null, args) );
+                },
+                // Render message template
+                renderMsg: function() {
+                    var args = arguments,
+                        tpl = args[0],
+                        i = args.length;
 
-        _setClass: function(el, isValid) {
-            var $el = $(el), opt = this.options;
-            if (opt.bindClassTo) {
-                $el = $el.closest(opt.bindClassTo);
-            }
-            $el.removeClass( opt.invalidClass + ' ' + opt.validClass );
-            if (isValid !== null) {
-                $el.addClass( isValid ? opt.validClass : opt.invalidClass );
-            }
-        },
+                    if (!tpl) return;
 
-        _showmsg: function(e, type, msg) {
-            var me = this,
-                el = e.target;
+                    while (--i) {
+                        tpl = tpl.replace('{' + i + '}', args[i]);
+                    }
 
-            if ( me.$el.is(el) ) {
-                if (isObject(type)) {
-                    me.showMsg(type)
-                }
-                else if ( type === 'tip' ) {
-                    me.$el.find(INPUT_SELECTOR +"["+ DATA_TIP +"]", el).each(function(){
-                        me.showMsg(this, {type: type, msg: msg});
-                    });
+                    return tpl;
                 }
-            }
-            else {
-                me.showMsg(el, {type: type, msg: msg});
-            }
-        },
+            });
+        }
+        function Field(key, obj, oldField) {
+            this.key = key;
+            this.validator = context;
+            $.extend(this, oldField, obj);
+        }
 
-        _hidemsg: function(e) {
-            var $el = $(e.target);
+        FieldFactory.prototype = context;
+        Field.prototype = new FieldFactory();
 
-            if ( $el.is(INPUT_SELECTOR) ) {
-                this.hideMsg($el);
-            }
-        },
+        return Field;
+    }
 
-        // Validated a field
-        _validatedField: function(el, field, ret) {
-            var me = this,
-                opt = me.options,
-                isValid = field.isValid = ret.isValid = !!ret.isValid,
-                callback = isValid ? 'valid' : 'invalid';
+    /**
+     * Create Rules
+     *
+     * @class
+     * @param {Object} obj     rules
+     * @param {Object} context context
+     */
+    function Rules(obj, context) {
+        if (!isObject(obj)) return;
 
-            ret.key = field.key;
-            ret.ruleName = field._r;
-            ret.id = el.id;
-            ret.value = field.value;
+        var k, that = context ? context === true ? this : context : Rules.prototype;
 
-            me.elements[field.key] = ret.element = el;
-            me.isValid = me.$el[0].isValid = isValid ? me.isFormValid() : isValid;
+        for (k in obj) {
+            if (_checkRuleName(k))
+                that[k] = _getRule(obj[k]);
+        }
+    }
 
-            if (isValid) {
-                ret.type = 'ok';
-            } else {
-                if (me.submiting) {
-                    me.errors[field.key] = ret.msg;
-                }
-                me.hasError = true;
-            }
+    /**
+     * Create Messages
+     *
+     * @class
+     * @param {Object} obj     rules
+     * @param {Object} context context
+     */
+    function Messages(obj, context) {
+        if (!isObject(obj)) return;
 
-            // cache result
-            field.old = ret;
+        var k, that = context ? context === true ? this : context : Messages.prototype;
 
-            // trigger callback
-            isFunction(field[callback]) && field[callback].call(me, el, ret);
-            isFunction(opt.validation) && opt.validation.call(me, el, ret);
+        for (k in obj) {
+            that[k] = obj[k];
+        }
+    }
 
-            // trigger event
-            $(el).attr( ARIA_INVALID, isValid ? null : true )
-                 .trigger( callback + CLS_NS_FIELD, [ret, me] );
-            me.$el.triggerHandler('validation', [ret, me]);
+    // Rule converted factory
+    function _getRule(fn) {
+        switch ($.type(fn)) {
+            case 'function':
+                return fn;
+            case 'array':
+                var f = function() {
+                    return fn[0].test(this.value) || fn[1] || false;
+                };
+                f.msg = fn[1];
+                return f;
+            case 'regexp':
+                return function() {
+                    return fn.test(this.value);
+                };
+        }
+    }
 
-            if (me.checkOnly) return;
-            // set className
-            me._setClass(el, ret.skip || ret.type === 'tip' ? null : isValid);
-            me._makeMsg.apply(me, arguments);
-        },
+    // Get instance by an element
+    function _getInstance(el) {
+        var wrap, k, options;
 
-        _makeMsg: function(el, field, ret) {
-            // show or hide the message
-            if (field.msgMaker) {
-                ret = $.extend({}, ret);
-                if (field._e === 'focusin') {
-                    ret.type = 'tip';
-                }
-                this[ ret.showOk || ret.msg || ret.type === 'tip' ? 'showMsg' : 'hideMsg' ](el, ret, field);
+        if (!el || !el.tagName) return;
+
+        switch (el.tagName) {
+            case 'INPUT':
+            case 'SELECT':
+            case 'TEXTAREA':
+            case 'BUTTON':
+            case 'FIELDSET':
+                wrap = el.form || $(el).closest('.' + CLS_WRAPPER);
+                break;
+            case 'FORM':
+                wrap = el;
+                break;
+            default:
+                wrap = $(el).closest('.' + CLS_WRAPPER);
+        }
+
+        for (k in preinitialized) {
+            if ($(wrap).is(k)) {
+                options = preinitialized[k];
+                break;
             }
-        },
-
-        // Validated a rule
-        _validatedRule: function(el, field, ret, msgOpt) {
-            field = field || me.getField(el);
-            msgOpt = msgOpt || {};
+        }
 
-            var me = this,
-                msg,
-                rule,
-                method = field._r,
-                timely = field.timely,
-                special = timely === 9 || timely === 8,
-                transfer,
-                temp,
-                isValid = false;
+        return $(wrap).data(NS) || $(wrap)[NS](options).data(NS);
+    }
 
-            // use null to break validation from a field
-            if (ret === null) {
-                me._validatedField(el, field, {isValid: true, skip: true});
-                field._i = 0;
-                return;
-            }
-            else if (ret === undefined) {
-                transfer = true;
-            }
-            else if (ret === true || ret === '') {
-                isValid = true;
-            }
-            else if (isString(ret)) {
-                msg = ret;
-            }
-            else if (isObject(ret)) {
-                if (ret.error) {
-                    msg = ret.error;
-                } else {
-                    msg = ret.ok;
-                    isValid = true;
-                }
-            }
-            else {
-                isValid = !!ret
-            }
+    // Get custom rules on the node
+    function _getDataRule(el, method) {
+        var fn = trim(attr(el, DATA_RULE + '-' + method));
 
-            rule = field._rules[field._i];
-            if (rule.not) {
-                msg = undefined;
-                isValid = method === "required" || !isValid;
-            }
-            if (rule.or) {
-                if (isValid) {
-                    while ( field._i < field._rules.length && field._rules[field._i].or ) {
-                        field._i++;
-                    }
-                } else {
-                    transfer = true;
-                }
-            }
-            else if (rule.and) {
-                if (!field.isValid) transfer = true;
-            }
+        if ( fn && (fn = new Function("return " + fn)()) ) {
+            return _getRule(fn);
+        }
+    }
 
-            if (transfer) {
-                isValid = true;
-            }
-            // message analysis, and throw rule level event
-            else {
-                if (isValid) {
-                    if (field.showOk !== false) {
-                        temp = attr(el, DATA_OK);
-                        msg = temp === null ? isString(field.ok) ? field.ok : msg : temp;
-                        if (!isString(msg) && isString(field.showOk)) {
-                            msg = field.showOk;
-                        }
-                        if (isString(msg)) {
-                            msgOpt.showOk = isValid;
-                        }
-                    }
-                }
-                if (!isValid || special) {
-                    /* rule message priority:
-                        1. custom DOM message
-                        2. custom field message;
-                        3. global defined message;
-                        4. rule returned message;
-                        5. default message;
-                    */
-                    msg = (_getDataMsg(el, field, msg || rule.msg || me.messages[method]) || me.messages.fallback).replace(/\{0\|?([^\}]*)\}/, function(m, defaultDisplay){
-                        return me._getDisplay(el, field.display) || defaultDisplay || me.messages[0];
-                    });
-                }
-                if (!isValid) field.isValid = isValid;
-                msgOpt.msg = msg;
-                $(el).trigger( (isValid ? 'valid' : 'invalid') + CLS_NS_RULE, [method, msg]);
-            }
+    // Get custom messages on the node
+    function _getDataMsg(el, field, m) {
+        var msg = field.msg,
+            item = field._r;
 
-            if (special && (!transfer || rule.and)) {
-                if (!isValid && !field._m) field._m = msg;
-                field._v = field._v || [];
-                field._v.push({
-                    type: isValid ? !transfer ? 'ok' : 'tip' : 'error',
-                    msg: msg || rule.msg
-                });
-            }
+        if ( isObject(msg) ) msg = msg[item];
+        if ( !isString(msg) ) {
+            msg = attr(el, DATA_MSG + '-' + item) || attr(el, DATA_MSG) || ( m ? isString(m) ? m : m[item] : '');
+        }
 
-            me._debug('log', '   ' + field._i + ': ' + method + ' => ' + (isValid || msg));
+        return msg;
+    }
 
-            // the current rule has passed, continue to validate
-            if ( (isValid || special) && field._i < field._rules.length - 1) {
-                field._i++;
-                me._checkRule(el, field);
-            }
-            // field was invalid, or all fields was valid
-            else {
-                field._i = 0;
+    // Get message position
+    function _getPos(str) {
+        var pos;
 
-                if (special) {
-                    msgOpt.isValid = field.isValid;
-                    msgOpt.result = field._v;
-                    msgOpt.msg = field._m || '';
-                    if (!field.value && (field._e === 'focusin')) {
-                        msgOpt.type = 'tip';
-                    }
-                } else {
-                    msgOpt.isValid = isValid;
-                }
+        if (str) pos = rPos.exec(str);
+        return pos && pos[0];
+    }
 
-                me._validatedField(el, field, msgOpt);
-                delete field._m;
-                delete field._v;
-            }
-        },
+    // Check whether the element is checkbox or radio
+    function _checkable(el) {
+        return el.tagName === 'INPUT' && el.type === 'checkbox' || el.type === 'radio';
+    }
 
-        // Verify a rule form a field
-        _checkRule: function(el, field) {
-            var me = this,
-                ret,
-                fn,
-                old,
-                key = field.key,
-                rule = field._rules[field._i],
-                method = rule.method,
-                params = rule.params;
+    // Parse date string to timestamp
+    function _parseDate(str) {
+        return Date.parse(str.replace(/\.|\-/g, '/'));
+    }
 
-            // request has been sent, wait it
-            if (me.submiting && me.deferred[key]) {
-                return;
-            }
-            old = field.old;
-            field._r = method;
+    // Rule name only allows alphanumeric characters and underscores
+    function _checkRuleName(name) {
+        return /^\w+$/.test(name);
+    }
 
-            if (old && !field.must && !rule.must && rule.result !== undefined &&
-                 old.ruleName === method && old.id === el.id &&
-                field.value && old.value === field.value )
-            {
-                // get result from cache
-                ret = rule.result;
-            }
-            else {
-                // get result from current rule
-                fn = _getDataRule(el, method) || me.rules[method] || noop;
-                ret = fn.call(field, el, params, field);
-                if (fn.msg) rule.msg = fn.msg;
-            }
+    // Translate field key to jQuery selector.
+    function _key2selector(key) {
+        var isID = key.charAt(0) === "#";
+        key = key.replace(/([:.{(|)}/\[\]])/g, "\\$1");
+        return isID ? key : '[name="'+ key +'"]:first';
+    }
 
-            // asynchronous validation
-            if (isObject(ret) && isFunction(ret.then)) {
-                me.deferred[key] = ret;
 
-                // whether the field valid is unknown
-                field.isValid = undefined;
+    // Fixed a issue cause by refresh page in IE.
+    $(window).on('beforeunload', function(){
+        this.focus();
+    });
 
-                // show loading message
-                !me.checkOnly && me.showMsg(el, {
-                    type: 'loading',
-                    msg: me.messages.loading
-                }, field);
+    $(document)
+    .on('click', ':submit', function(){
+        var input = this, attrNode;
+        if (!input.form) return;
+        // Shim for "formnovalidate"
+        attrNode = input.getAttributeNode('formnovalidate');
+        if (attrNode && attrNode.nodeValue !== null || attr(input, NOVALIDATE)!== null) {
+            novalidateonce = true;
+        }
+    })
+    // Automatic initializing form validation
+    .on('focusin submit validate', 'form,.'+CLS_WRAPPER, function(e) {
+        if ( attr(this, NOVALIDATE) !== null ) return;
+        var $form = $(this), me;
 
-                // waiting to parse the response data
-                ret.then(
-                    function(d, textStatus, jqXHR) {
-                        var data = trim(jqXHR.responseText),
-                            result,
-                            dataFilter = field.dataFilter;
+        if ( !$form.data(NS) && (me = _getInstance(this)) ) {
+            if ( !$.isEmptyObject(me.fields) ) {
+                // Execute event handler
+                if (e.type === 'focusin') {
+                    me._focusin(e);
+                } else {
+                    me._submit(e);
+                }
+            } else {
+                attr(this, NOVALIDATE, NOVALIDATE);
+                $form.off(CLS_NS).removeData(NS);
+            }
+        }
+    });
 
-                        // detect if data is json or jsonp format
-                        if (/jsonp?/.test(this.dataType)) {
-                            data = d;
-                        } else if (data.charAt(0) === '{') {
-                            data = $.parseJSON(data);
-                        }
+    new Messages({
+        fallback: "This field is not valid.",
+        loading: 'Validating...'
+    });
 
-                        // filter data
-                        result = dataFilter.call(this, data, field);
-                        if (result === undefined) result = dataFilter.call(this, data.data, field);
 
-                        rule.data = this.data;
-                        rule.result = field.old ? result : undefined;
-                        me._validatedRule(el, field, result);
-                    },
-                    function(jqXHR, textStatus){
-                        me._validatedRule(el, field, me.messages[textStatus] || textStatus);
-                    }
-                ).always(function(){
-                    delete me.deferred[key];
-                });
-            }
-            // other result
-            else {
-                me._validatedRule(el, field, ret);
-            }
-        },
+    // Built-in rules (global)
+    new Rules({
 
-        // Processing the validation
-        _validate: function(el, field) {
-            var me = this;
+        /**
+         * required
+         *
+         * @example:
+            required
+            required(anotherRule)
+            required(not, -1)
+            required(from, .contact)
+         */
+        required: function(element, params) {
+            var me = this,
+                val = trim(me.value),
+                isValid = true;
 
-            // doesn't validate the element that has "disabled" or "novalidate" attribute
-            if ( el.disabled || attr(el, NOVALIDATE) !== null ) {
-                return;
-            }
+            if (params) {
+                if ( params.length === 1 ) {
+                    if ( !_checkRuleName(params[0]) ) {
+                        if (!val && !$(params[0], me.$el).length ) {
+                            return null;
+                        }
+                    }
+                    else if ( me.rules[params[0]] ) {
+                        if ( !val && !me.test(element, params[0]) ) {
+                            return null;
+                        }
+                    }
+                }
+                else if ( params[0] === 'not' ) {
+                    $.each(params.slice(1), function() {
+                        return (isValid = val !== trim(this));
+                    });
+                }
+                else if ( params[0] === 'from' ) {
+                    var $elements = me.$el.find(params[1]),
+                        VALIDATED = '_validated_',
+                        ret;
 
-            field = field || me.getField(el);
-            if (!field) return;
-            if (!field._rules) me._parse(el);
-            if (!field._rules) return;
+                    isValid = $elements.filter(function(){
+                        var field = me.getField(this);
+                        return field && !!trim(field.getValue());
+                    }).length >= (params[2] || 1);
 
-            me._debug('info', field.key);
+                    if (isValid) {
+                        if (!val) ret = null;
+                    } else {
+                        ret = _getDataMsg($elements[0], me) || false;
+                    }
 
-            field.isValid = true;
-            field.element = el;
-            // Cache the value
-            field.value = field.getValue();
+                    if ( !$(element).data(VALIDATED) ) {
+                        $elements.data(VALIDATED, 1).each(function(){
+                            if (element !== this) {
+                                me._validate(this);
+                            }
+                        }).removeData(VALIDATED);
+                    }
 
-            // if the field is not required, and that has a blank value
-            if (!field.required && !field.must && !field.value) {
-                if (!_checkable(el)) {
-                    me._validatedField(el, field, {isValid: true});
-                    return true;
+                    return ret;
                 }
             }
 
-            me._checkRule(el, field);
-            return field.isValid;
+            return isValid && !!val;
         },
 
-        _debug: function(type, messages) {
-            if (window.console && this.options.debug) {
-                console[type](messages);
+        /**
+         * integer
+         *
+         * @example:
+            integer
+            integer[+]
+            integer[+0]
+            integer[-]
+            integer[-0]
+         */
+        integer: function(element, params) {
+            var re, z = '0|',
+                p = '[1-9]\\d*',
+                key = params ? params[0] : '*';
+
+            switch (key) {
+                case '+':
+                    re = p;
+                    break;
+                case '-':
+                    re = '-' + p;
+                    break;
+                case '+0':
+                    re = z + p;
+                    break;
+                case '-0':
+                    re = z + '-' + p;
+                    break;
+                default:
+                    re = z + '-?' + p;
             }
+            re = '^(?:' + re + ')$';
+
+            return new RegExp(re).test(this.value) || (this.messages.integer && this.messages.integer[key]);
         },
 
         /**
-         * Detecting whether the value of an element that matches a rule
+         * match another field
          *
-         * @method test
-         * @param {Element} el - input element
-         * @param {String} rule - rule name
-         */
-        test: function(el, rule) {
+         * @example:
+            match[password]    Match the password field (two values ​​must be the same)
+            match[eq, password]  Ditto
+            match[neq, count]  The value must be not equal to the value of the count field
+            match[lt, count]   The value must be less than the value of the count field
+            match[lte, count]  The value must be less than or equal to the value of the count field
+            match[gt, count]   The value must be greater than the value of the count field
+            match[gte, count]  The value must be greater than or equal to the value of the count field
+            match[gte, startDate, date]
+            match[gte, startTime, time]
+         **/
+        match: function(element, params) {
+            if (!params) return;
+
             var me = this,
-                ret,
-                parts = rRule.exec(rule),
-                field,
-                method,
-                params;
+                isValid = true,
+                a, b,
+                key, msg, type = 'eq', parser,
+                selector2, elem2, field2;
 
-            if (parts) {
-                method = parts[1];
-                if (method in me.rules) {
-                    params = parts[2] || parts[3];
-                    params = params ? params.split(', ') : undefined;
-                    field = me.getField(el, true);
-                    field._r = method;
-                    field.value = field.getValue();
-                    ret = me.rules[method].call(field, el, params);
+            if (params.length === 1) {
+                key = params[0];
+            } else {
+                type = params[0];
+                key = params[1];
+            }
+
+            selector2 = _key2selector(key);
+            elem2 = me.$el.find(selector2)[0];
+            // If the compared field is not exist
+            if (!elem2) return;
+            field2 = me.getField(elem2);
+            a = me.value;
+            b = field2.getValue();
+
+            if (!me._match) {
+                me.$el.on('valid'+CLS_NS_FIELD+CLS_NS, selector2, function(){
+                    $(element).trigger('validate');
+                });
+                me._match = field2._match = 1;
+            }
+
+            // If both fields are blank
+            if (!me.required && a === "" && b === "") {
+                return null;
+            }
+
+            parser = params[2];
+            if (parser) {
+                if (/^date(time)?$/i.test(parser)) {
+                    a = _parseDate(a);
+                    b = _parseDate(b);
+                } else if (parser === 'time') {
+                    a = +a.replace(/:/g, '');
+                    b = +b.replace(/:/g, '');
                 }
             }
 
-            return ret === true || ret === undefined || ret === null;
-        },
+            // If the compared field is incorrect, we only ensure that this field is correct.
+            if (type !== "eq" && !isNaN(+a) && isNaN(+b)) {
+                return true;
+            }
 
-        _getDisplay: function(el, str) {
-            return !isString(str) ? isFunction(str) ? str.call(this, el) : '' : str;
+            switch (type) {
+                case 'lt':
+                    isValid = +a < +b; break;
+                case 'lte':
+                    isValid = +a <= +b; break;
+                case 'gte':
+                    isValid = +a >= +b; break;
+                case 'gt':
+                    isValid = +a > +b; break;
+                case 'neq':
+                    isValid = a !== b; break;
+                default:
+                    isValid = a === b;
+            }
+
+            return isValid || (
+                isObject(me.messages.match)
+                && me.messages.match[type].replace( '{1}', me._getDisplay( element, field2.display || key ) )
+            );
         },
 
-        _getMsgOpt: function(obj, field) {
-            var opt = field ? field : this.options;
-            return $.extend({
-                type: 'error',
-                pos: _getPos(opt.msgClass),
-                target: opt.target,
-                wrapper: opt.msgWrapper,
-                style: opt.msgStyle,
-                cls: opt.msgClass,
-                arrow: opt.msgArrow,
-                icon: opt.msgIcon
-            }, isString(obj) ? {msg: obj} : obj);
+        /**
+         * range numbers
+         *
+         * @example:
+            range[0~99]    Number 0-99
+            range[0~]      Number greater than or equal to 0
+            range[~100]    Number less than or equal to 100
+         **/
+        range: function(element, params) {
+            return this.getRangeMsg(this.value, params);
         },
 
-        _getMsgDOM: function(el, msgOpt) {
-            var $el = $(el), $msgbox, datafor, tgt, container;
+        /**
+         * how many checkbox or radio inputs that checked
+         *
+         * @example:
+            checked;       no empty, same to required
+            checked[1~3]   1-3 items
+            checked[1~]    greater than 1 item
+            checked[~3]    less than 3 items
+            checked[3]     3 items
+         **/
+        checked: function(element, params) {
+            if ( !_checkable(element) ) return;
 
-            if ( $el.is(INPUT_SELECTOR) ) {
-                tgt = msgOpt.target || attr(el, DATA_TARGET);
-                if (tgt) {
-                    tgt = !isFunction(tgt) ? tgt.charAt(0) === '#' ? $(tgt) : this.$el.find(tgt) : tgt.call(this, el);
-                    if (tgt.length) {
-                        if ( tgt.is(INPUT_SELECTOR) ) {
-                            $el = tgt
-                            el = tgt.get(0);
-                        } else if ( tgt.hasClass(CLS_MSG_BOX) ) {
-                            $msgbox = tgt;
-                        } else {
-                            container = tgt;
-                        }
-                    }
-                }
-                if (!$msgbox) {
-                    datafor = (!_checkable(el) || !el.name) && el.id ? el.id : el.name;
-                    $msgbox = (container || this.$el).find(msgOpt.wrapper + '.' + CLS_MSG_BOX + '[for="' + datafor + '"]');
-                }
+            var me = this,
+                elem, count;
+
+            if (element.name) {
+                count = me.$el.find('input[name="' + element.name + '"]').filter(function() {
+                    var el = this;
+                    if (!elem && _checkable(el)) elem = el;
+                    return !el.disabled && el.checked;
+                }).length;
             } else {
-                $msgbox = $el;
+                elem = element;
+                count = elem.checked;
             }
 
-            // Create new message box
-            if (!msgOpt.hide && !$msgbox.length) {
-                $msgbox = $('<'+ msgOpt.wrapper + '>').attr({
-                    'class': CLS_MSG_BOX + (msgOpt.cls ? ' ' + msgOpt.cls : ''),
-                    'style': msgOpt.style || undefined,
-                    'for': datafor
-                });
-
-                if (container) {
-                    $msgbox.appendTo(container);
-                } else {
-                    if ( _checkable(el) ) {
-                        var $parent = $el.parent();
-                        $msgbox.appendTo( $parent.is('label') ? $parent.parent() : $parent );
-                    } else {
-                        $msgbox[!msgOpt.pos || msgOpt.pos === 'right' ? 'insertAfter' : 'insertBefore']($el);
-                    }
-                }
+            if (params) {
+                return me.getRangeMsg(count, params);
+            } else {
+                return !!count || _getDataMsg(elem, me, '') || me.messages.required || false;
             }
-
-            return $msgbox;
         },
 
         /**
-         * Show validation message
+         * length of a characters (You can pass the second parameter "true", will calculate the length in bytes)
          *
-         * @method showMsg
-         * @param {Element} el - input element
-         * @param {Object} msgOpt
-         */
-        showMsg: function(el, msgOpt, /*INTERNAL*/ field) {
-            if (!el) return;
-            var me = this,
-                opt = me.options,
-                msgShow,
-                msgMaker,
-                temp,
-                $msgbox;
+         * @example:
+            length[6~16]        6-16 characters
+            length[6~]          Greater than 6 characters
+            length[~16]         Less than 16 characters
+            length[~16, true]   Less than 16 characters, non-ASCII characters calculating two-character
+         **/
+        length: function(element, params) {
+            var value = this.value,
+                len = (params[1] === 'true' ? value.replace(rDoubleBytes, 'xx') : value).length;
 
-            if (isObject(el) && !el.jquery && !msgOpt) {
-                $.each(el, function(key, msg) {
-                    var el = me.elements[key] || me.$el.find(_key2selector(key))[0];
-                    me.showMsg(el, msg);
-                });
-                return;
-            }
+            return this.getRangeMsg(len, params, (params[1] ? '_2' : ''));
+        },
 
-            if ($(el).is(INPUT_SELECTOR)) {
-                field = field || me.getField(el);
-            }
+        /**
+         * remote validation
+         *
+         * @description
+         *  remote([get:]url [, name1, [name2 ...]]);
+         *  Adaptation three kinds of results (Front for the successful, followed by a failure):
+                1. text:
+                    ''  'Error Message'
+                2. json:
+                    {"ok": ""}  {"error": "Error Message"}
+                3. json wrapper:
+                    {"status": 1, "data": {"ok": ""}}  {"status": 1, "data": {"error": "Error Message"}}
+         * @example
+            The simplest:       remote(path/to/server);
+            With parameters:    remote(path/to/server, name1, name2, ...);
+            By GET:             remote(get:path/to/server, name1, name2, ...);
+            Name proxy:         remote(path/to/server, name1, proxyname2:name2, proxyname3:#id3, ...)
+            Query String        remote(path/to/server, foo=1&bar=2, name1, name2, ...)
+         */
+        remote: function(element, params) {
+            if (!params) return;
 
-            if (!(msgMaker = (field || opt).msgMaker)) {
-                return;
-            }
+            var me = this,
+                arr = rAjaxType.exec(params[0]),
+                rule = me._rules[me._i],
+                data = {},
+                queryString = '',
+                url = arr[3],
+                type = arr[2] || 'POST',            // GET / POST
+                rType = (arr[1]||'').toLowerCase(), // CORS / JSONP
+                dataType;
 
-            msgOpt = me._getMsgOpt(msgOpt, field);
-            el = (el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]') : $(el)).get(0);
+            rule.must = true;
+            data[element.name] = me.value;
 
-            // ok or tip
-            if (!msgOpt.msg && msgOpt.type !== 'error') {
-                temp = attr(el, 'data-' + msgOpt.type);
-                if (temp !== null) msgOpt.msg = temp;
+            // There are extra fields
+            if (params[1]) {
+                $.map(params.slice(1), function(name) {
+                    var arr, key;
+                    if (~name.indexOf('=')) {
+                        queryString += '&' + name;
+                    } else {
+                        arr = name.split(':');
+                        name = trim(arr[0]);
+                        key = trim(arr[1]) || name;
+                        data[ name ] = me.$el.find( _key2selector(key) ).val();
+                    }
+                });
             }
 
-            if ( !isString(msgOpt.msg) ) {
-                return;
+            data = $.param(data) + queryString;
+            if (!me.must && rule.data && rule.data === data) {
+                return rule.result;
             }
 
-            $msgbox = me._getMsgDOM(el, msgOpt);
-
-            !rPos.test($msgbox[0].className) && $msgbox.addClass(msgOpt.cls);
-            if ( isIE === 6 && msgOpt.pos === 'bottom' ) {
-                $msgbox[0].style.marginTop = $(el).outerHeight() + 'px';
+            // Cross-domain request, force jsonp dataType
+            if (rType !== 'cors' && /^https?:/.test(url) && !~url.indexOf(location.host)) {
+                dataType = 'jsonp';
             }
-            $msgbox.html( msgMaker.call(me, msgOpt) )[0].style.display = '';
 
-            if (isFunction(msgShow = field && field.msgShow || opt.msgShow)) {
-                msgShow.call(me, $msgbox, msgOpt.type);
-            }
+            // Asynchronous validation need return jqXHR objects
+            return $.ajax({
+                url: url,
+                type: type,
+                data: data,
+                dataType: dataType
+            });
         },
 
         /**
-         * Hide validation message
+         * filter characters, direct filtration without prompting error (support custom regular expressions)
          *
-         * @method hideMsg
-         * @param {Element} el - input element
-         * @param {Object} msgOpt optional
+         * @example
+         *  filter          filtering unsafe characters
+         *  filter(regexp)  filtering the "regexp" matched characters
          */
-        hideMsg: function(el, msgOpt, /*INTERNAL*/ field) {
-            var me = this,
-                opt = me.options,
-                msgHide,
-                $msgbox;
+        filter: function(element, params) {
+            var value = this.value,
+                temp = value.replace( params ? (new RegExp("[" + params[0] + "]", "gm")) : rUnsafe, '' );
+            if (temp !== value) this.setValue(temp);
+        }
+    });
 
-            el = $(el).get(0);
-            if ($(el).is(INPUT_SELECTOR)) {
-                field = field || me.getField(el);
-                if (field) {
-                    if (field.isValid || me.reseting) attr(el, ARIA_INVALID, null);
-                }
+
+    /**
+     * Config global options
+     *
+     * @static  config
+     * @param {Object} options
+     */
+    Validator.config = function(key, value) {
+        if (isObject(key)) {
+            $.each(key, _config);
+        }
+        else if (isString(key)) {
+            _config(key, value);
+        }
+
+        function _config(k, o) {
+            if (k === 'rules') {
+                new Rules(o);
+            }
+            else if (k === 'messages') {
+                new Messages(o);
+            }
+            else if (k in fieldDefaults) {
+                fieldDefaults[k] = o;
+            }
+            else {
+                defaults[k] = o;
             }
+        }
+    };
 
-            msgOpt = me._getMsgOpt(msgOpt, field);
-            msgOpt.hide = true;
+    /**
+     * Config themes
+     *
+     * @static setTheme
+     * @param {String|Object} name
+     * @param {Object} obj
+     * @example
+        .setTheme( themeName, themeOptions )
+        .setTheme( multiThemes )
+     */
+    Validator.setTheme = function(name, obj) {
+        if ( isObject(name) ) {
+            $.extend(true, themes, name);
+        }
+        else if ( isString(name) && isObject(obj) ) {
+            themes[name] = $.extend(themes[name], obj);
+        }
+    };
 
-            $msgbox = me._getMsgDOM(el, msgOpt);
-            if (!$msgbox.length) return;
+    /**
+     * Resource loader
+     *
+     * @static load
+     * @param {String} str
+     * @example
+        .load('local=zh-CN')        // load: local/zh-CN.js and jquery.validator.css
+        .load('local=zh-CN&css=')   // load: local/zh-CN.js
+        .load('local&css')          // load: local/en.js (set <html lang="en">) and jquery.validator.css
+        .load('local')              // dito
+     */
+    Validator.load = function(str) {
+        if (!str) return;
+        var doc = document,
+            params = {},
+            node = doc.scripts[0],
+            dir, el, ONLOAD;
 
-            if ( isFunction(msgHide = field && field.msgHide || opt.msgHide) ) {
-                msgHide.call(me, $msgbox, msgOpt.type);
-            } else {
-                $msgbox[0].style.display = 'none';
-                $msgbox[0].innerHTML = '';
-            }
-        },
+        str.replace(/([^?=&]+)=([^&#]*)/g, function(m, key, value){
+            params[key] = value;
+        });
 
-        /**
-         * Get field information
-         *
-         * @method getField
-         * @param {Element} - input element
-         * @return {Object} field
-         */
-        getField: function(el, must) {
-            var me = this,
-                key,
-                field;
+        dir = params.dir || Validator.dir;
 
-            if (isString(el)) {
-                key = el;
-                el = undefined;
-            } else {
-                if (attr(el, DATA_RULE)) {
-                    return me._parse(el);
-                }
-                if (el.id && '#' + el.id in me.fields || !el.name) {
-                    key = '#' + el.id;
-                } else {
-                    key = el.name;
+        if (!Validator.css && params.css !== '') {
+            el = doc.createElement('link');
+            el.rel = 'stylesheet';
+            el.href = Validator.css = dir + 'jquery.validator.css';
+            node.parentNode.insertBefore(el, node);
+        }
+        if (!Validator.local && ~str.indexOf('local') && params.local !== '') {
+            Validator.local = (params.local || doc.documentElement.lang || 'en').replace('_','-');
+            Validator.pending = 1;
+            el = doc.createElement('script');
+            el.src = dir + 'local/' + Validator.local + '.js';
+            ONLOAD = 'onload' in el ? 'onload' : 'onreadystatechange';
+            el[ONLOAD] = function() {
+                if (!el.readyState || /loaded|complete/.test(el.readyState)) {
+                    el = el[ONLOAD] = null;
+                    delete Validator.pending;
+                    $(window).triggerHandler('validatorready');
                 }
-            }
+            };
+            node.parentNode.insertBefore(el, node);
+        }
+    };
 
-            if ( (field = me.fields[key]) || must && (field = new me.Field(key)) ) {
-                field.element = el;
-            }
+    // Auto loading resources
+    (function(){
+        var scripts = document.scripts,
+            i = scripts.length, node, arr,
+            re = /(.*validator(?:\.min)?.js)(\?.*(?:local|css|dir)(?:=[\w\-]*)?)?/;
 
-            return field;
-        },
+        while (i-- && !arr) {
+            node = scripts[i];
+            arr = (node.hasAttribute ? node.src : node.getAttribute('src',4)||'').match(re);
+        }
 
-        /**
-         * Config a field
-         *
-         * @method: setField
-         * @param {String} key
-         * @param {Object} obj
-         */
-        setField: function(key, obj) {
-            var fields = {};
+        if (!arr) return;
+        Validator.dir = arr[1].split('/').slice(0, -1).join('/')+'/';
+        Validator.load(arr[2]);
+    })();
 
-            if (!key) return;
+    return $[NS] = Validator;
+}));
 
-            // update this field
-            if (isString(key)) {
-                fields[key] = obj;
-            }
-            // update fields
-            else {
-                fields = key;
-            }
+/*********************************
+ * Themes, rules, and i18n support
+ * Locale: Chinese; 中文
+ *********************************/
+(function(factory) {
+    typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) :
+    typeof define === 'function' && define.amd ? define('validator-lang',['jquery'], factory) :
+    factory(jQuery);
+}(function($) {
 
-            this._initFields(fields);
-        },
+    /* Global configuration
+     */
+    $.validator.config({
+        //stopOnError: true,
+        //focusCleanup: true,
+        //theme: 'yellow_right',
+        //timely: 2,
 
-        /**
-         * Detecting whether the form is valid
-         *
-         * @method isFormValid
-         * @return {Boolean}
-         */
-        isFormValid: function() {
-            var fields = this.fields, k, field;
-            for (k in fields) {
-                field = fields[k];
-                if (!field._rules || !field.required && !field.must && !field.value) continue;
-                if (!field.isValid) return false;
+        // Custom rules
+        rules: {
+            digits: [/^\d+$/, "请填写数字"]
+            ,letters: [/^[a-z]+$/i, "请填写字母"]
+            ,date: [/^\d{4}-\d{2}-\d{2}$/, "请填写有效的日期,格式:yyyy-mm-dd"]
+            ,time: [/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/, "请填写有效的时间,00:00到23:59之间"]
+            ,email: [/^[\w\+\-]+(\.[\w\+\-]+)*@[a-z\d\-]+(\.[a-z\d\-]+)*\.([a-z]{2,4})$/i, "请填写有效的邮箱"]
+            ,url: [/^(https?|s?ftp):\/\/\S+$/i, "请填写有效的网址"]
+            ,qq: [/^[1-9]\d{4,}$/, "请填写有效的QQ号"]
+            ,IDcard: [/^\d{6}(19|2\d)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)?$/, "请填写正确的身份证号码"]
+            ,tel: [/^(?:(?:0\d{2,3}[\- ]?[1-9]\d{6,7})|(?:[48]00[\- ]?[1-9]\d{6}))$/, "请填写有效的电话号码"]
+            ,mobile: [/^1[3-9]\d{9}$/, "请填写有效的手机号"]
+            ,zipcode: [/^\d{6}$/, "请检查邮政编码格式"]
+            ,chinese: [/^[\u0391-\uFFE5]+$/, "请填写中文字符"]
+            ,username: [/^\w{3,12}$/, "请填写3-12位数字、字母、下划线"]
+            ,password: [/^[\S]{6,16}$/, "请填写6-16位字符,不能包含空格"]
+            ,accept: function (element, params){
+                if (!params) return true;
+                var ext = params[0],
+                    value = $(element).val();
+                return (ext === '*') ||
+                       (new RegExp(".(?:" + ext + ")$", "i")).test(value) ||
+                       this.renderMsg("只接受{1}后缀的文件", ext.replace(/\|/g, ','));
             }
-            return true;
-        },
-
-        /**
-         * Prevent submission form
-         *
-         * @method holdSubmit
-         * @param {Boolean} hold - If set to false, will release the hold
-         */
-        holdSubmit: function(hold) {
-            this.submiting = hold === undefined || hold;
-        },
-
-        /**
-         * Clean validation messages
-         *
-         * @method cleanUp
-         */
-        cleanUp: function() {
-            this._reset(1);
+            
         },
 
-        /**
-         * Destroy the validation
-         *
-         * @method destroy
-         */
-        destroy: function() {
-            this._reset(1);
-            this.$el.off(CLS_NS).removeData(NS);
-            attr(this.$el[0], NOVALIDATE, this._NOVALIDATE);
-        }
-    };
-
-    /**
-     * Create Field Factory
-     *
-     * @class
-     * @param  {Object}     context
-     * @return {Function}   Factory
-     */
-    function _createFieldFactory(context) {
-        function FieldFactory() {
-            var options = this.options;
-            for (var i in options) {
-                if (i in fieldDefaults) this[i] = options[i];
+        // Default error messages
+        messages: {
+            0: "此处",
+            fallback: "{0}格式不正确",
+            loading: "正在验证...",
+            error: "网络异常",
+            timeout: "请求超时",
+            required: "{0}不能为空",
+            remote: "{0}已被使用",
+            integer: {
+                '*': "请填写整数",
+                '+': "请填写正整数",
+                '+0': "请填写正整数或0",
+                '-': "请填写负整数",
+                '-0': "请填写负整数或0"
+            },
+            match: {
+                eq: "{0}与{1}不一致",
+                neq: "{0}与{1}不能相同",
+                lt: "{0}必须小于{1}",
+                gt: "{0}必须大于{1}",
+                lte: "{0}不能大于{1}",
+                gte: "{0}不能小于{1}"
+            },
+            range: {
+                rg: "请填写{1}到{2}的数",
+                gte: "请填写不小于{1}的数",
+                lte: "请填写最大{1}的数",
+                gtlt: "请填写{1}到{2}之间的数",
+                gt: "请填写大于{1}的数",
+                lt: "请填写小于{1}的数"
+            },
+            checked: {
+                eq: "请选择{1}项",
+                rg: "请选择{1}到{2}项",
+                gte: "请至少选择{1}项",
+                lte: "请最多选择{1}项"
+            },
+            length: {
+                eq: "请填写{1}个字符",
+                rg: "请填写{1}到{2}个字符",
+                gte: "请至少填写{1}个字符",
+                lte: "请最多填写{1}个字符",
+                eq_2: "",
+                rg_2: "",
+                gte_2: "",
+                lte_2: ""
             }
-            $.extend(this, {
-                _valHook: function() {
-                    return this.element.contentEditable === 'true' ? 'text' : 'val';
-                },
-                getValue: function() {
-                    var elem = this.element;
-                    if (elem.type === "number" && elem.validity && elem.validity.badInput) {
-                        return 'NaN';
-                    }
-                    return  $(elem)[this._valHook()]();
-                },
-                setValue: function(value) {
-                    $(this.element)[this._valHook()](this.value = value);
-                },
-                // Get a range of validation messages
-                getRangeMsg: function(value, params, suffix) {
-                    if (!params) return;
+        }
+    });
 
-                    var me = this,
-                        msg = me.messages[me._r] || '',
-                        result,
-                        p = params[0].split('~'),
-                        e = params[1] === 'false',
-                        a = p[0],
-                        b = p[1],
-                        c = 'rg',
-                        args = [''],
-                        isNumber = trim(value) && +value === +value;
+    /* Themes
+     */
+    var TPL_ARROW = '<span class="n-arrow"><b>◆</b><i>◆</i></span>';
+    $.validator.setTheme({
+        'simple_right': {
+            formClass: 'n-simple',
+            msgClass: 'n-right'
+        },
+        'simple_bottom': {
+            formClass: 'n-simple',
+            msgClass: 'n-bottom'
+        },
+        'yellow_top': {
+            formClass: 'n-yellow',
+            msgClass: 'n-top',
+            msgArrow: TPL_ARROW
+        },
+        'yellow_right': {
+            formClass: 'n-yellow',
+            msgClass: 'n-right',
+            msgArrow: TPL_ARROW
+        },
+        'yellow_right_effect': {
+            formClass: 'n-yellow',
+            msgClass: 'n-right',
+            msgArrow: TPL_ARROW,
+            msgShow: function($msgbox, type){
+                var $el = $msgbox.children();
+                if ($el.is(':animated')) return;
+                if (type === 'error') {
+                    $el.css({left: '20px', opacity: 0})
+                        .delay(100).show().stop()
+                        .animate({left: '-4px', opacity: 1}, 150)
+                        .animate({left: '3px'}, 80)
+                        .animate({left: 0}, 80);
+                } else {
+                    $el.css({left: 0, opacity: 1}).fadeIn(200);
+                }
+            },
+            msgHide: function($msgbox, type){
+                var $el = $msgbox.children();
+                $el.stop().delay(100).show()
+                    .animate({left: '20px', opacity: 0}, 300, function(){
+                        $msgbox.hide();
+                    });
+            }
+        }
+    });
+}));
 
-                    function compare(large, small) {
-                        return !e ? large >= small : large > small;
+define('validator',['validator-core', 'validator-lang'], function (Validator, undefined) {
+    return Validator;
+});
+define('form',['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, Upload, Validator) {
+    var Form = {
+        config: {
+            fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="30" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>'
+        },
+        events: {
+            validator: function (form, success, error, submit) {
+                if (!form.is("form"))
+                    return;
+                //绑定表单事件
+                form.validator($.extend({
+                    validClass: 'has-success',
+                    invalidClass: 'has-error',
+                    bindClassTo: '.form-group',
+                    formClass: 'n-default n-bootstrap',
+                    msgClass: 'n-right',
+                    stopOnError: true,
+                    display: function (elem) {
+                        return $(elem).closest('.form-group').find(".control-label").text().replace(/\:/, '');
+                    },
+                    dataFilter: function (data) {
+                        if (data.code === 1) {
+                            return "";
+                        } else {
+                            return data.msg;
+                        }
+                    },
+                    target: function (input) {
+                        var target = $(input).data("target");
+                        if (target && $(target).size() > 0) {
+                            return $(target);
+                        }
+                        var $formitem = $(input).closest('.form-group'),
+                            $msgbox = $formitem.find('span.msg-box');
+                        if (!$msgbox.length) {
+                            return [];
+                        }
+                        return $msgbox;
+                    },
+                    valid: function (ret) {
+                        var that = this, submitBtn = $(".layer-footer [type=submit]", form);
+                        that.holdSubmit();
+                        $(".layer-footer [type=submit]", form).addClass("disabled");
+                        //验证通过提交表单
+                        Form.api.submit($(ret), function (data, ret) {
+                            that.holdSubmit(false);
+                            submitBtn.removeClass("disabled");
+                            if (false === $(this).triggerHandler("success.form", [data, ret])) {
+                                return false;
+                            }
+                            if (typeof success === 'function') {
+                                if (false === success.call($(this), data, ret)) {
+                                    return false;
+                                }
+                            }
+                            //提示及关闭当前窗口
+                            var msg = ret.hasOwnProperty("msg") && ret.msg !== "" ? ret.msg : __('Operation completed');
+                            parent.Toastr.success(msg);
+                            parent.$(".btn-refresh").trigger("click");
+                            var index = parent.Layer.getFrameIndex(window.name);
+                            parent.Layer.close(index);
+                            return false;
+                        }, function (data, ret) {
+                            that.holdSubmit(false);
+                            if (false === $(this).triggerHandler("error.form", [data, ret])) {
+                                return false;
+                            }
+                            submitBtn.removeClass("disabled");
+                            if (typeof error === 'function') {
+                                if (false === error.call($(this), data, ret)) {
+                                    return false;
+                                }
+                            }
+                        }, submit);
+                        return false;
                     }
+                }, form.data("validator-options") || {}));
 
-                    if (p.length === 2) {
-                        if (a && b) {
-                            if (isNumber && compare(value, +a) && compare(+b, value)) {
-                                result = true;
-                            }
-                            args = args.concat(p);
-                            c = e ? 'gtlt' : 'rg';
-                        }
-                        else if (a && !b) {
-                            if (isNumber && compare(value, +a)) {
-                                result = true;
+                //移除提交按钮的disabled类
+                $(".layer-footer [type=submit],.fixed-footer [type=submit],.normal-footer [type=submit]", form).removeClass("disabled");
+            },
+            selectpicker: function (form) {
+                //绑定select元素事件
+                if ($(".selectpicker", form).size() > 0) {
+                    require(['bootstrap-select', 'bootstrap-select-lang'], function () {
+                        $('.selectpicker', form).selectpicker();
+                    });
+                }
+            },
+            selectpage: function (form) {
+                //绑定selectpage元素事件
+                if ($(".selectpage", form).size() > 0) {
+                    require(['selectpage'], function () {
+                        $('.selectpage', form).selectPage({
+                            eAjaxSuccess: function (data) {
+                                data.list = typeof data.rows !== 'undefined' ? data.rows : (typeof data.list !== 'undefined' ? data.list : []);
+                                data.totalRow = typeof data.total !== 'undefined' ? data.total : (typeof data.totalRow !== 'undefined' ? data.totalRow : data.list.length);
+                                return data;
                             }
-                            args.push(a);
-                            c = e ? 'gt' : 'gte';
-                        }
-                        else if (!a && b) {
-                            if (isNumber && compare(+b, value)) {
-                                result = true;
+                        });
+                    });
+                    //给隐藏的元素添加上validate验证触发事件
+                    $(document).on("change", ".sp_hidden", function () {
+                        $(this).trigger("validate");
+                    });
+                    $(document).on("change", ".sp_input", function () {
+                        $(this).closest(".sp_container").find(".sp_hidden").trigger("change");
+                    });
+                    $(form).on("reset", function () {
+                        setTimeout(function () {
+                            $('.selectpage', form).selectPageClear();
+                        }, 1);
+                    });
+                }
+            },
+            cxselect: function (form) {
+                //绑定cxselect元素事件
+                if ($("[data-toggle='cxselect']", form).size() > 0) {
+                    require(['cxselect'], function () {
+                        $.cxSelect.defaults.jsonName = 'name';
+                        $.cxSelect.defaults.jsonValue = 'value';
+                        $.cxSelect.defaults.jsonSpace = 'data';
+                        $("[data-toggle='cxselect']", form).cxSelect();
+                    });
+                }
+            },
+            citypicker: function (form) {
+                //绑定城市远程插件
+                if ($("[data-toggle='city-picker']", form).size() > 0) {
+                    require(['citypicker'], function () {
+                    });
+                }
+            },
+            datetimepicker: function (form) {
+                //绑定日期时间元素事件
+                if ($(".datetimepicker", form).size() > 0) {
+                    require(['bootstrap-datetimepicker'], function () {
+                        var options = {
+                            format: 'YYYY-MM-DD HH:mm:ss',
+                            icons: {
+                                time: 'fa fa-clock-o',
+                                date: 'fa fa-calendar',
+                                up: 'fa fa-chevron-up',
+                                down: 'fa fa-chevron-down',
+                                previous: 'fa fa-chevron-left',
+                                next: 'fa fa-chevron-right',
+                                today: 'fa fa-history',
+                                clear: 'fa fa-trash',
+                                close: 'fa fa-remove'
+                            },
+                            showTodayButton: true,
+                            showClose: true
+                        };
+                        $('.datetimepicker', form).parent().css('position', 'relative');
+                        $('.datetimepicker', form).datetimepicker(options);
+                    });
+                }
+            },
+            daterangepicker: function (form) {
+                //绑定日期时间元素事件
+                if ($(".datetimerange", form).size() > 0) {
+                    require(['bootstrap-daterangepicker'], function () {
+                        var ranges = {};
+                        ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')];
+                        ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')];
+                        ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')];
+                        ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')];
+                        ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')];
+                        ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')];
+                        var options = {
+                            timePicker: false,
+                            autoUpdateInput: false,
+                            timePickerSeconds: true,
+                            timePicker24Hour: true,
+                            autoApply: true,
+                            locale: {
+                                format: 'YYYY-MM-DD HH:mm:ss',
+                                customRangeLabel: __("Custom Range"),
+                                applyLabel: __("Apply"),
+                                cancelLabel: __("Clear"),
+                            },
+                            ranges: ranges,
+                        };
+                        var origincallback = function (start, end) {
+                            $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format));
+                            $(this.element).trigger('blur');
+                        };
+                        $(".datetimerange", form).each(function () {
+                            var callback = typeof $(this).data('callback') == 'function' ? $(this).data('callback') : origincallback;
+                            $(this).on('apply.daterangepicker', function (ev, picker) {
+                                callback.call(picker, picker.startDate, picker.endDate);
+                            });
+                            $(this).on('cancel.daterangepicker', function (ev, picker) {
+                                $(this).val('').trigger('blur');
+                            });
+                            $(this).daterangepicker($.extend({}, options, $(this).data()), callback);
+                        });
+                    });
+                }
+            },
+            plupload: function (form) {
+                //绑定plupload上传元素事件
+                if ($(".plupload", form).size() > 0) {
+                    Upload.api.plupload($(".plupload", form));
+                }
+            },
+            faselect: function (form) {
+                //绑定fachoose选择附件事件
+                if ($(".fachoose", form).size() > 0) {
+                    $(".fachoose", form).on('click', function () {
+                        var that = this;
+                        var multiple = $(this).data("multiple") ? $(this).data("multiple") : false;
+                        var mimetype = $(this).data("mimetype") ? $(this).data("mimetype") : '';
+                        parent.Fast.api.open("general/attachment/select?element_id=" + $(this).attr("id") + "&multiple=" + multiple + "&mimetype=" + mimetype, __('Choose'), {
+                            callback: function (data) {
+                                var button = $("#" + $(that).attr("id"));
+                                var maxcount = $(button).data("maxcount");
+                                var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
+                                maxcount = typeof maxcount !== "undefined" ? maxcount : 0;
+                                if (input_id && data.multiple) {
+                                    var urlArr = [];
+                                    var inputObj = $("#" + input_id);
+                                    var value = $.trim(inputObj.val());
+                                    if (value !== "") {
+                                        urlArr.push(inputObj.val());
+                                    }
+                                    urlArr.push(data.url)
+                                    var result = urlArr.join(",");
+                                    if (maxcount > 0) {
+                                        var nums = value === '' ? 0 : value.split(/\,/).length;
+                                        var files = data.url !== "" ? data.url.split(/\,/) : [];
+                                        var remains = maxcount - nums;
+                                        if (files.length > remains) {
+                                            Toastr.error(__('You can choose up to %d file%s', remains));
+                                            return false;
+                                        }
+                                    }
+                                    inputObj.val(result).trigger("change");
+                                } else {
+                                    $("#" + input_id).val(data.url).trigger("change");
+                                }
                             }
-                            args.push(b);
-                            c = e ? 'lt' : 'lte';
-                        }
-                    }
-                    else {
-                        if (value === +a) {
-                            result = true;
-                        }
-                        args.push(a);
-                        c = 'eq';
-                    }
-
-                    if (msg) {
-                        if (suffix && msg[c + suffix]) {
-                            c += suffix;
-                        }
-                        args[0] = msg[c];
-                    }
-
-                    return result || me._rules && ( me._rules[me._i].msg = me.renderMsg.apply(null, args) );
-                },
-                // Render message template
-                renderMsg: function() {
-                    var args = arguments,
-                        tpl = args[0],
-                        i = args.length;
-
-                    if (!tpl) return;
-
-                    while (--i) {
-                        tpl = tpl.replace('{' + i + '}', args[i]);
-                    }
-
-                    return tpl;
+                        });
+                        return false;
+                    });
                 }
-            });
-        }
-        function Field(key, obj, oldField) {
-            this.key = key;
-            this.validator = context;
-            $.extend(this, oldField, obj);
-        }
-
-        FieldFactory.prototype = context;
-        Field.prototype = new FieldFactory();
-
-        return Field;
-    }
-
-    /**
-     * Create Rules
-     *
-     * @class
-     * @param {Object} obj     rules
-     * @param {Object} context context
-     */
-    function Rules(obj, context) {
-        if (!isObject(obj)) return;
-
-        var k, that = context ? context === true ? this : context : Rules.prototype;
-
-        for (k in obj) {
-            if (_checkRuleName(k))
-                that[k] = _getRule(obj[k]);
-        }
-    }
-
-    /**
-     * Create Messages
-     *
-     * @class
-     * @param {Object} obj     rules
-     * @param {Object} context context
-     */
-    function Messages(obj, context) {
-        if (!isObject(obj)) return;
-
-        var k, that = context ? context === true ? this : context : Messages.prototype;
-
-        for (k in obj) {
-            that[k] = obj[k];
-        }
-    }
-
-    // Rule converted factory
-    function _getRule(fn) {
-        switch ($.type(fn)) {
-            case 'function':
-                return fn;
-            case 'array':
-                var f = function() {
-                    return fn[0].test(this.value) || fn[1] || false;
-                };
-                f.msg = fn[1];
-                return f;
-            case 'regexp':
-                return function() {
-                    return fn.test(this.value);
-                };
-        }
-    }
-
-    // Get instance by an element
-    function _getInstance(el) {
-        var wrap, k, options;
-
-        if (!el || !el.tagName) return;
-
-        switch (el.tagName) {
-            case 'INPUT':
-            case 'SELECT':
-            case 'TEXTAREA':
-            case 'BUTTON':
-            case 'FIELDSET':
-                wrap = el.form || $(el).closest('.' + CLS_WRAPPER);
-                break;
-            case 'FORM':
-                wrap = el;
-                break;
-            default:
-                wrap = $(el).closest('.' + CLS_WRAPPER);
-        }
+            },
+            fieldlist: function (form) {
+                //绑定fieldlist
+                if ($(".fieldlist", form).size() > 0) {
+                    require(['dragsort', 'template'], function (undefined, Template) {
+                        //刷新隐藏textarea的值
+                        var refresh = function (name) {
+                            var data = {};
+                            var textarea = $("textarea[name='" + name + "']", form);
+                            var container = textarea.closest("dl");
+                            var template = container.data("template");
+                            console.log(name, container);
+                            $.each($("input,select", container).serializeArray(), function (i, j) {
+                                var reg = /\[(\w+)\]\[(\w+)\]$/g;
+                                var match = reg.exec(j.name);
+                                if (!match)
+                                    return true;
+                                match[1] = "x" + parseInt(match[1]);
+                                if (typeof data[match[1]] == 'undefined') {
+                                    data[match[1]] = {};
+                                }
+                                data[match[1]][match[2]] = j.value;
+                            });
+                            var result = template ? [] : {};
+                            $.each(data, function (i, j) {
+                                if (j) {
+                                    if (!template) {
+                                        if (j.key != '') {
+                                            result[j.key] = j.value;
+                                        }
+                                    } else {
+                                        result.push(j);
+                                    }
+                                }
+                            });
+                            textarea.val(JSON.stringify(result));
+                        };
+                        //监听文本框改变事件
+                        $(document).on('change keyup', ".fieldlist input,.fieldlist textarea,.fieldlist select", function () {
+                            refresh($(this).closest("dl").data("name"));
+                        });
+                        //追加控制
+                        $(".fieldlist", form).on("click", ".btn-append,.append", function (e, row) {
+                            var container = $(this).closest("dl");
+                            var index = container.data("index");
+                            var name = container.data("name");
+                            var template = container.data("template");
+                            var data = container.data();
+                            index = index ? parseInt(index) : 0;
+                            container.data("index", index + 1);
+                            var row = row ? row : {};
+                            var vars = {index: index, name: name, data: data, row: row};
+                            var html = template ? Template(template, vars) : Template.render(Form.config.fieldlisttpl, vars);
+                            $(html).insertBefore($(this).closest("dd"));
+                            $(this).trigger("fa.event.appendfieldlist", $(this).closest("dd").prev());
+                        });
+                        //移除控制
+                        $(".fieldlist", form).on("click", "dd .btn-remove", function () {
+                            var container = $(this).closest("dl");
+                            $(this).closest("dd").remove();
+                            refresh(container.data("name"));
+                        });
+                        //拖拽排序
+                        $("dl.fieldlist", form).dragsort({
+                            itemSelector: 'dd',
+                            dragSelector: ".btn-dragsort",
+                            dragEnd: function () {
+                                refresh($(this).closest("dl").data("name"));
+                            },
+                            placeHolderTemplate: "<dd></dd>"
+                        });
+                        //渲染数据
+                        $(".fieldlist", form).each(function () {
+                            var container = this;
+                            var textarea = $("textarea[name='" + $(this).data("name") + "']", form);
+                            if (textarea.val() == '') {
+                                return true;
+                            }
+                            var template = $(this).data("template");
+                            var json = {};
+                            try {
+                                json = JSON.parse(textarea.val());
+                            } catch (e) {
+                            }
+                            $.each(json, function (i, j) {
+                                $(".btn-append,.append", container).trigger('click', template ? j : {
+                                    key: i,
+                                    value: j
+                                });
+                            });
+                        });
+                    });
+                }
+            },
+            bindevent: function (form) {
 
-        for (k in preinitialized) {
-            if ($(wrap).is(k)) {
-                options = preinitialized[k];
-                break;
             }
-        }
-
-        return $(wrap).data(NS) || $(wrap)[NS](options).data(NS);
-    }
-
-    // Get custom rules on the node
-    function _getDataRule(el, method) {
-        var fn = trim(attr(el, DATA_RULE + '-' + method));
-
-        if ( fn && (fn = new Function("return " + fn)()) ) {
-            return _getRule(fn);
-        }
-    }
-
-    // Get custom messages on the node
-    function _getDataMsg(el, field, m) {
-        var msg = field.msg,
-            item = field._r;
+        },
+        api: {
+            submit: function (form, success, error, submit) {
+                if (form.size() === 0)
+                    return Toastr.error("表单未初始化完成,无法提交");
+                if (typeof submit === 'function') {
+                    if (false === submit.call(form)) {
+                        return false;
+                    }
+                }
+                var type = form.attr("method").toUpperCase();
+                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
+                url = form.attr("action");
+                url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']", form);
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
+                //调用Ajax请求方法
+                Fast.api.ajax({
+                    type: type,
+                    url: url,
+                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                    }
+                }, function (data, ret) {
+                    $('.form-group', form).removeClass('has-feedback has-success has-error');
+                    if (data && typeof data === 'object') {
+                        //刷新客户端token
+                        if (typeof data.token !== 'undefined') {
+                            $("input[name='__token__']", form).val(data.token);
+                        }
+                        //调用客户端事件
+                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
+                            data.callback.call(form, data);
+                        }
+                    }
+                    if (typeof success === 'function') {
+                        if (false === success.call(form, data, ret)) {
+                            return false;
+                        }
+                    }
+                }, function (data, ret) {
+                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
+                        $("input[name='__token__']", form).val(data.token);
+                    }
+                    if (typeof error === 'function') {
+                        if (false === error.call(form, data, ret)) {
+                            return false;
+                        }
+                    }
+                });
+                return false;
+            },
+            bindevent: function (form, success, error, submit) {
 
-        if ( isObject(msg) ) msg = msg[item];
-        if ( !isString(msg) ) {
-            msg = attr(el, DATA_MSG + '-' + item) || attr(el, DATA_MSG) || ( m ? isString(m) ? m : m[item] : '');
-        }
+                form = typeof form === 'object' ? form : $(form);
 
-        return msg;
-    }
+                var events = Form.events;
 
-    // Get message position
-    function _getPos(str) {
-        var pos;
+                events.bindevent(form);
 
-        if (str) pos = rPos.exec(str);
-        return pos && pos[0];
-    }
+                events.validator(form, success, error, submit);
 
-    // Check whether the element is checkbox or radio
-    function _checkable(el) {
-        return el.tagName === 'INPUT' && el.type === 'checkbox' || el.type === 'radio';
-    }
+                events.selectpicker(form);
 
-    // Parse date string to timestamp
-    function _parseDate(str) {
-        return Date.parse(str.replace(/\.|\-/g, '/'));
-    }
+                events.daterangepicker(form);
 
-    // Rule name only allows alphanumeric characters and underscores
-    function _checkRuleName(name) {
-        return /^\w+$/.test(name);
-    }
+                events.selectpage(form);
 
-    // Translate field key to jQuery selector.
-    function _key2selector(key) {
-        var isID = key.charAt(0) === "#";
-        key = key.replace(/([:.{(|)}/\[\]])/g, "\\$1");
-        return isID ? key : '[name="'+ key +'"]:first';
-    }
+                events.cxselect(form);
 
+                events.citypicker(form);
 
-    // Fixed a issue cause by refresh page in IE.
-    $(window).on('beforeunload', function(){
-        this.focus();
-    });
+                events.datetimepicker(form);
 
-    $(document)
-    .on('click', ':submit', function(){
-        var input = this, attrNode;
-        if (!input.form) return;
-        // Shim for "formnovalidate"
-        attrNode = input.getAttributeNode('formnovalidate');
-        if (attrNode && attrNode.nodeValue !== null || attr(input, NOVALIDATE)!== null) {
-            novalidateonce = true;
-        }
-    })
-    // Automatic initializing form validation
-    .on('focusin submit validate', 'form,.'+CLS_WRAPPER, function(e) {
-        if ( attr(this, NOVALIDATE) !== null ) return;
-        var $form = $(this), me;
+                events.plupload(form);
 
-        if ( !$form.data(NS) && (me = _getInstance(this)) ) {
-            if ( !$.isEmptyObject(me.fields) ) {
-                // Execute event handler
-                if (e.type === 'focusin') {
-                    me._focusin(e);
-                } else {
-                    me._submit(e);
-                }
-            } else {
-                attr(this, NOVALIDATE, NOVALIDATE);
-                $form.off(CLS_NS).removeData(NS);
-            }
-        }
-    });
+                events.faselect(form);
 
-    new Messages({
-        fallback: "This field is not valid.",
-        loading: 'Validating...'
-    });
+                events.fieldlist(form);
+            },
+            custom: {}
+        },
+    };
+    return Form;
+});
+/**
+ * FastAdmin通用搜索
+ *
+ * @author: pppscn <35696959@qq.com>
+ * @update 2017-05-07 <https://gitee.com/pp/fastadmin>
+ *
+ * @author: Karson <karsonzhang@163.com>
+ * @update 2018-04-05 <https://gitee.com/karson/fastadmin>
+ */
 
+!function ($) {
+    'use strict';
 
-    // Built-in rules (global)
-    new Rules({
+    var ColumnsForSearch = [];
 
-        /**
-         * required
-         *
-         * @example:
-            required
-            required(anotherRule)
-            required(not, -1)
-            required(from, .contact)
-         */
-        required: function(element, params) {
-            var me = this,
-                val = trim(me.value),
-                isValid = true;
+    var sprintf = $.fn.bootstrapTable.utils.sprintf;
 
-            if (params) {
-                if ( params.length === 1 ) {
-                    if ( !_checkRuleName(params[0]) ) {
-                        if (!val && !$(params[0], me.$el).length ) {
-                            return null;
-                        }
-                    }
-                    else if ( me.rules[params[0]] ) {
-                        if ( !val && !me.test(element, params[0]) ) {
-                            return null;
-                        }
-                    }
-                }
-                else if ( params[0] === 'not' ) {
-                    $.each(params.slice(1), function() {
-                        return (isValid = val !== trim(this));
-                    });
-                }
-                else if ( params[0] === 'from' ) {
-                    var $elements = me.$el.find(params[1]),
-                        VALIDATED = '_validated_',
-                        ret;
+    var initCommonSearch = function (pColumns, that) {
+        var vFormCommon = createFormCommon(pColumns, that);
 
-                    isValid = $elements.filter(function(){
-                        var field = me.getField(this);
-                        return field && !!trim(field.getValue());
-                    }).length >= (params[2] || 1);
+        var vModal = sprintf("<div class=\"commonsearch-table %s\">", that.options.searchFormVisible ? "" : "hidden");
+        vModal += vFormCommon;
+        vModal += "</div>";
+        that.$container.prepend($(vModal));
+        that.$commonsearch = $(".commonsearch-table", that.$container);
+        var form = $("form.form-commonsearch", that.$commonsearch);
 
-                    if (isValid) {
-                        if (!val) ret = null;
-                    } else {
-                        ret = _getDataMsg($elements[0], me) || false;
-                    }
+        require(['form'], function (Form) {
+            Form.api.bindevent(form);
+            form.validator("destroy");
+        });
 
-                    if ( !$(element).data(VALIDATED) ) {
-                        $elements.data(VALIDATED, 1).each(function(){
-                            if (element !== this) {
-                                me._validate(this);
-                            }
-                        }).removeData(VALIDATED);
-                    }
+        // 表单提交
+        form.on("submit", function (event) {
+            event.preventDefault();
+            that.onCommonSearch();
+            return false;
+        });
 
-                    return ret;
-                }
-            }
+        // 重置搜索
+        form.on("click", "button[type=reset]", function (event) {
+            form[0].reset();
+            that.onCommonSearch();
+        });
 
-            return isValid && !!val;
-        },
+    };
 
-        /**
-         * integer
-         *
-         * @example:
-            integer
-            integer[+]
-            integer[+0]
-            integer[-]
-            integer[-0]
-         */
-        integer: function(element, params) {
-            var re, z = '0|',
-                p = '[1-9]\\d*',
-                key = params ? params[0] : '*';
+    var createFormCommon = function (pColumns, that) {
+        // 如果有使用模板则直接返回模板的内容
+        if (that.options.searchFormTemplate) {
+            return Template(that.options.searchFormTemplate, {columns: pColumns, table: that});
+        }
+        var htmlForm = [];
+        htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" novalidate method="post" action="%s" >', that.options.actionForm));
+        htmlForm.push('<fieldset>');
+        if (that.options.titleForm.length > 0)
+            htmlForm.push(sprintf("<legend>%s</legend>", that.options.titleForm));
+        htmlForm.push('<div class="row">');
+        for (var i in pColumns) {
+            var vObjCol = pColumns[i];
+            if (!vObjCol.checkbox && vObjCol.field !== 'operate' && vObjCol.searchable && vObjCol.operate !== false) {
+                var query = Backend.api.query(vObjCol.field);
+                var operate = Backend.api.query(vObjCol.field + "-operate");
 
-            switch (key) {
-                case '+':
-                    re = p;
-                    break;
-                case '-':
-                    re = '-' + p;
-                    break;
-                case '+0':
-                    re = z + p;
-                    break;
-                case '-0':
-                    re = z + '-' + p;
-                    break;
-                default:
-                    re = z + '-?' + p;
-            }
-            re = '^(?:' + re + ')$';
+                vObjCol.defaultValue = that.options.renderDefault && query ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue);
+                vObjCol.operate = that.options.renderDefault && operate ? operate : (typeof vObjCol.operate === 'undefined' ? '=' : vObjCol.operate);
+                ColumnsForSearch.push(vObjCol);
 
-            return new RegExp(re).test(this.value) || (this.messages.integer && this.messages.integer[key]);
-        },
+                htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">');
+                htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title));
+                htmlForm.push('<div class="col-xs-8">');
 
-        /**
-         * match another field
-         *
-         * @example:
-            match[password]    Match the password field (two values ​​must be the same)
-            match[eq, password]  Ditto
-            match[neq, count]  The value must be not equal to the value of the count field
-            match[lt, count]   The value must be less than the value of the count field
-            match[lte, count]  The value must be less than or equal to the value of the count field
-            match[gt, count]   The value must be greater than the value of the count field
-            match[gte, count]  The value must be greater than or equal to the value of the count field
-            match[gte, startDate, date]
-            match[gte, startTime, time]
-         **/
-        match: function(element, params) {
-            if (!params) return;
+                vObjCol.operate = vObjCol.operate ? vObjCol.operate.toUpperCase() : '=';
+                htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="%s-operate" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate));
 
-            var me = this,
-                isValid = true,
-                a, b,
-                key, msg, type = 'eq', parser,
-                selector2, elem2, field2;
+                var addClass = typeof vObjCol.addClass === 'undefined' ? (typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass) : 'form-control ' + vObjCol.addClass;
+                var extend = typeof vObjCol.extend === 'undefined' ? '' : vObjCol.extend;
+                var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style);
+                extend = typeof vObjCol.data !== 'undefined' && extend == '' ? vObjCol.data : extend;
+                if (vObjCol.searchList) {
+                    if (typeof vObjCol.searchList === 'object' && typeof vObjCol.searchList.then === 'function') {
+                        htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, sprintf('<option value="">%s</option>', that.options.formatCommonChoose())));
+                        (function (vObjCol, that) {
+                            $.when(vObjCol.searchList).done(function (ret) {
+                                var isArray = false;
+                                if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) {
+                                    var resultlist = {};
+                                    $.each(ret.data.searchlist, function (key, value) {
+                                        resultlist[value.id] = value.name;
+                                    });
+                                } else if (ret.constructor === Array || ret.constructor === Object) {
+                                    var resultlist = ret;
+                                    isArray = ret.constructor === Array ? true : isArray;
+                                }
+                                var optionList = [];
+                                $.each(resultlist, function (key, value) {
+                                    var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : '';
+                                    optionList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect));
+                                });
+                                $("form.form-commonsearch select[name='" + vObjCol.field + "']", that.$container).append(optionList.join(''));
+                            });
+                        })(vObjCol, that);
+                    } else if (typeof vObjCol.searchList == 'function') {
+                        htmlForm.push(vObjCol.searchList.call(this, vObjCol));
+                    } else {
+                        var isArray = vObjCol.searchList.constructor === Array;
+                        var searchList = [];
+                        searchList.push(sprintf('<option value="">%s</option>', that.options.formatCommonChoose()));
+                        $.each(vObjCol.searchList, function (key, value) {
+                            var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : '';
+                            searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect));
+                        });
+                        htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, searchList.join('')));
+                    }
+                } else {
+                    var placeholder = typeof vObjCol.placeholder === 'undefined' ? vObjCol.title : vObjCol.placeholder;
+                    var type = typeof vObjCol.type === 'undefined' ? 'text' : vObjCol.type;
+                    var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue;
+                    if (/BETWEEN$/.test(vObjCol.operate)) {
+                        var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', ''];
+                        var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder];
+                        htmlForm.push('<div class="row row-between">');
+                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, extend));
+                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, extend));
+                        htmlForm.push('</div>');
+                    } else {
+                        htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addClass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, extend));
+                    }
+                }
 
-            if (params.length === 1) {
-                key = params[0];
-            } else {
-                type = params[0];
-                key = params[1];
+                htmlForm.push('</div>');
+                htmlForm.push('</div>');
             }
+        }
+        htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">');
+        htmlForm.push(createFormBtn(that).join(''));
+        htmlForm.push('</div>');
+        htmlForm.push('</div>');
+        htmlForm.push('</fieldset>');
+        htmlForm.push('</form>');
 
-            selector2 = _key2selector(key);
-            elem2 = me.$el.find(selector2)[0];
-            // If the compared field is not exist
-            if (!elem2) return;
-            field2 = me.getField(elem2);
-            a = me.value;
-            b = field2.getValue();
+        return htmlForm.join('');
+    };
 
-            if (!me._match) {
-                me.$el.on('valid'+CLS_NS_FIELD+CLS_NS, selector2, function(){
-                    $(element).trigger('validate');
-                });
-                me._match = field2._match = 1;
-            }
+    var createFormBtn = function (that) {
+        var htmlBtn = [];
+        var searchSubmit = that.options.formatCommonSubmitButton();
+        var searchReset = that.options.formatCommonResetButton();
+        htmlBtn.push('<div class="col-sm-8 col-xs-offset-4">');
+        htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" formnovalidate>%s</button> ', searchSubmit));
+        htmlBtn.push(sprintf('<button type="reset" class="btn btn-default" >%s</button> ', searchReset));
+        htmlBtn.push('</div>');
+        return htmlBtn;
+    };
 
-            // If both fields are blank
-            if (!me.required && a === "" && b === "") {
-                return null;
-            }
+    var isSearchAvailble = function (that) {
 
-            parser = params[2];
-            if (parser) {
-                if (/^date(time)?$/i.test(parser)) {
-                    a = _parseDate(a);
-                    b = _parseDate(b);
-                } else if (parser === 'time') {
-                    a = +a.replace(/:/g, '');
-                    b = +b.replace(/:/g, '');
-                }
-            }
+        //只支持服务端搜索
+        if (!that.options.commonSearch || that.options.sidePagination != 'server' || !that.options.url) {
+            return false;
+        }
 
-            // If the compared field is incorrect, we only ensure that this field is correct.
-            if (type !== "eq" && !isNaN(+a) && isNaN(+b)) {
-                return true;
-            }
+        return true;
+    };
 
-            switch (type) {
-                case 'lt':
-                    isValid = +a < +b; break;
-                case 'lte':
-                    isValid = +a <= +b; break;
-                case 'gte':
-                    isValid = +a >= +b; break;
-                case 'gt':
-                    isValid = +a > +b; break;
-                case 'neq':
-                    isValid = a !== b; break;
-                default:
-                    isValid = a === b;
+    var getSearchQuery = function (that, removeempty) {
+        var op = {};
+        var filter = {};
+        var value = '';
+        $("form.form-commonsearch .operate", that.$commonsearch).each(function (i) {
+            var name = $(this).data("name");
+            var sym = $(this).is("select") ? $("option:selected", this).val() : $(this).val().toUpperCase();
+            var obj = $("[name='" + name + "']", that.$commonsearch);
+            if (obj.size() == 0)
+                return true;
+            var vObjCol = ColumnsForSearch[i];
+            if (obj.size() > 1) {
+                if (/BETWEEN$/.test(sym)) {
+                    var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()),
+                        value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val());
+                    if (value_begin.length || value_end.length) {
+                        if (typeof vObjCol.process === 'function') {
+                            value_begin = vObjCol.process(value_begin, 'begin');
+                            value_end = vObjCol.process(value_end, 'end');
+                        }
+                        value = value_begin + ',' + value_end;
+                    } else {
+                        value = '';
+                    }
+                    //如果是时间筛选,将operate置为RANGE
+                    if ($("[name='" + name + "']:first", that.$commonsearch).hasClass("datetimepicker")) {
+                        sym = 'RANGE';
+                    }
+                } else {
+                    value = $("[name='" + name + "']:checked", that.$commonsearch).val();
+                    value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val();
+                }
+            } else {
+                value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val();
+            }
+            if (removeempty && (value == '' || value == null || ($.isArray(value) && value.length == 0)) && !sym.match(/null/i)) {
+                return true;
             }
 
-            return isValid || (
-                isObject(me.messages.match)
-                && me.messages.match[type].replace( '{1}', me._getDisplay( element, field2.display || key ) )
-            );
-        },
+            op[name] = sym;
+            filter[name] = value;
+        });
+        return {op: op, filter: filter};
+    };
 
-        /**
-         * range numbers
-         *
-         * @example:
-            range[0~99]    Number 0-99
-            range[0~]      Number greater than or equal to 0
-            range[~100]    Number less than or equal to 100
-         **/
-        range: function(element, params) {
-            return this.getRangeMsg(this.value, params);
-        },
+    var getQueryParams = function (params, searchQuery, removeempty) {
+        params.filter = typeof params.filter === 'Object' ? params.filter : (params.filter ? JSON.parse(params.filter) : {});
+        params.op = typeof params.op === 'Object' ? params.op : (params.op ? JSON.parse(params.op) : {});
 
-        /**
-         * how many checkbox or radio inputs that checked
-         *
-         * @example:
-            checked;       no empty, same to required
-            checked[1~3]   1-3 items
-            checked[1~]    greater than 1 item
-            checked[~3]    less than 3 items
-            checked[3]     3 items
-         **/
-        checked: function(element, params) {
-            if ( !_checkable(element) ) return;
+        params.filter = $.extend({}, params.filter, searchQuery.filter);
+        params.op = $.extend({}, params.op, searchQuery.op);
+        //移除empty的值
+        if (removeempty) {
+            $.each(params.filter, function (i, j) {
+                if ((j == '' || j == null || ($.isArray(j) && j.length == 0)) && !params.op[i].match(/null/i)) {
+                    delete params.filter[i];
+                    delete params.op[i];
+                }
+            });
+        }
+        params.filter = JSON.stringify(params.filter);
+        params.op = JSON.stringify(params.op);
+        return params;
+    };
 
-            var me = this,
-                elem, count;
+    $.extend($.fn.bootstrapTable.defaults, {
+        commonSearch: false,
+        titleForm: "Common search",
+        actionForm: "",
+        searchFormTemplate: "",
+        searchFormVisible: true,
+        searchClass: 'searchit',
+        showSearch: true,
+        renderDefault: true,
+        onCommonSearch: function (field, text) {
+            return false;
+        },
+        onPostCommonSearch: function (table) {
+            return false;
+        }
+    });
 
-            if (element.name) {
-                count = me.$el.find('input[name="' + element.name + '"]').filter(function() {
-                    var el = this;
-                    if (!elem && _checkable(el)) elem = el;
-                    return !el.disabled && el.checked;
-                }).length;
-            } else {
-                elem = element;
-                count = elem.checked;
-            }
+    $.extend($.fn.bootstrapTable.defaults.icons, {
+        commonSearchIcon: 'glyphicon-search'
+    });
 
-            if (params) {
-                return me.getRangeMsg(count, params);
-            } else {
-                return !!count || _getDataMsg(elem, me, '') || me.messages.required || false;
-            }
+    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
+        'common-search.bs.table': 'onCommonSearch',
+        'post-common-search.bs.table': 'onPostCommonSearch'
+    });
+    $.extend($.fn.bootstrapTable.locales[$.fn.bootstrapTable.defaults.locale], {
+        formatCommonSearch: function () {
+            return "Common search";
         },
+        formatCommonSubmitButton: function () {
+            return "Submit";
+        },
+        formatCommonResetButton: function () {
+            return "Reset";
+        },
+        formatCommonCloseButton: function () {
+            return "Close";
+        },
+        formatCommonChoose: function () {
+            return "Choose";
+        }
+    });
 
-        /**
-         * length of a characters (You can pass the second parameter "true", will calculate the length in bytes)
-         *
-         * @example:
-            length[6~16]        6-16 characters
-            length[6~]          Greater than 6 characters
-            length[~16]         Less than 16 characters
-            length[~16, true]   Less than 16 characters, non-ASCII characters calculating two-character
-         **/
-        length: function(element, params) {
-            var value = this.value,
-                len = (params[1] === 'true' ? value.replace(rDoubleBytes, 'xx') : value).length;
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
 
-            return this.getRangeMsg(len, params, (params[1] ? '_2' : ''));
-        },
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initHeader = BootstrapTable.prototype.initHeader,
+        _initToolbar = BootstrapTable.prototype.initToolbar,
+        _load = BootstrapTable.prototype.load,
+        _initSearch = BootstrapTable.prototype.initSearch;
 
-        /**
-         * remote validation
-         *
-         * @description
-         *  remote([get:]url [, name1, [name2 ...]]);
-         *  Adaptation three kinds of results (Front for the successful, followed by a failure):
-                1. text:
-                    ''  'Error Message'
-                2. json:
-                    {"ok": ""}  {"error": "Error Message"}
-                3. json wrapper:
-                    {"status": 1, "data": {"ok": ""}}  {"status": 1, "data": {"error": "Error Message"}}
-         * @example
-            The simplest:       remote(path/to/server);
-            With parameters:    remote(path/to/server, name1, name2, ...);
-            By GET:             remote(get:path/to/server, name1, name2, ...);
-            Name proxy:         remote(path/to/server, name1, proxyname2:name2, proxyname3:#id3, ...)
-            Query String        remote(path/to/server, foo=1&bar=2, name1, name2, ...)
-         */
-        remote: function(element, params) {
-            if (!params) return;
+    BootstrapTable.prototype.initHeader = function () {
+        _initHeader.apply(this, Array.prototype.slice.apply(arguments));
+        this.$header.find('th[data-field]').each(function (i) {
+            var column = $(this).data();
+            if (typeof column['width'] !== 'undefined') {
+                $(this).css("min-width", column['width']);
+            }
+        });
+    };
+    BootstrapTable.prototype.initToolbar = function () {
+        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
 
-            var me = this,
-                arr = rAjaxType.exec(params[0]),
-                rule = me._rules[me._i],
-                data = {},
-                queryString = '',
-                url = arr[3],
-                type = arr[2] || 'POST',            // GET / POST
-                rType = (arr[1]||'').toLowerCase(), // CORS / JSONP
-                dataType;
+        if (!isSearchAvailble(this)) {
+            return;
+        }
 
-            rule.must = true;
-            data[element.name] = me.value;
+        var that = this,
+            html = [];
+        if(that.options.showSearch){
+            html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign));
+            html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch()));
+            html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon))
+            html.push('</button></div>');
+        }
+        if (that.$toolbar.find(".pull-right").size() > 0) {
+            $(html.join('')).insertBefore(that.$toolbar.find(".pull-right:first"));
+        } else {
+            that.$toolbar.append(html.join(''));
+        }
 
-            // There are extra fields
-            if (params[1]) {
-                $.map(params.slice(1), function(name) {
-                    var arr, key;
-                    if (~name.indexOf('=')) {
-                        queryString += '&' + name;
-                    } else {
-                        arr = name.split(':');
-                        name = trim(arr[0]);
-                        key = trim(arr[1]) || name;
-                        data[ name ] = me.$el.find( _key2selector(key) ).val();
-                    }
-                });
-            }
+        initCommonSearch(that.columns, that);
 
-            data = $.param(data) + queryString;
-            if (!me.must && rule.data && rule.data === data) {
-                return rule.result;
-            }
+        that.$toolbar.find('button[name="commonSearch"]')
+            .off('click').on('click', function () {
+            that.$commonsearch.toggleClass("hidden");
+            return;
+        });
 
-            // Cross-domain request, force jsonp dataType
-            if (rType !== 'cors' && /^https?:/.test(url) && !~url.indexOf(location.host)) {
-                dataType = 'jsonp';
+        that.$container.on("click", "." + that.options.searchClass, function () {
+            var obj = $("form [name='" + $(this).data("field") + "']", that.$commonsearch);
+            if (obj.size() > 0) {
+                obj.val($(this).data("value"));
+                $("form", that.$commonsearch).trigger("submit");
             }
+        });
+        var queryParams = that.options.queryParams;
+        //匹配默认搜索值
+        this.options.queryParams = function (params) {
+            return queryParams(getQueryParams(params, getSearchQuery(that, true)));
+        };
+        this.trigger('post-common-search', that);
 
-            // Asynchronous validation need return jqXHR objects
-            return $.ajax({
-                url: url,
-                type: type,
-                data: data,
-                dataType: dataType
-            });
-        },
+    };
 
-        /**
-         * filter characters, direct filtration without prompting error (support custom regular expressions)
-         *
-         * @example
-         *  filter          filtering unsafe characters
-         *  filter(regexp)  filtering the "regexp" matched characters
-         */
-        filter: function(element, params) {
-            var value = this.value,
-                temp = value.replace( params ? (new RegExp("[" + params[0] + "]", "gm")) : rUnsafe, '' );
-            if (temp !== value) this.setValue(temp);
-        }
-    });
+    BootstrapTable.prototype.onCommonSearch = function () {
+        var searchQuery = getSearchQuery(this);
+        this.trigger('common-search', this, searchQuery);
+        this.options.pageNumber = 1;
+        this.refresh({});
+    };
 
+    BootstrapTable.prototype.load = function (data) {
+        _load.apply(this, Array.prototype.slice.apply(arguments));
 
-    /**
-     * Config global options
-     *
-     * @static  config
-     * @param {Object} options
-     */
-    Validator.config = function(key, value) {
-        if (isObject(key)) {
-            $.each(key, _config);
+        if (!isSearchAvailble(this)) {
+            return;
         }
-        else if (isString(key)) {
-            _config(key, value);
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!isSearchAvailble(this)) {
+            return;
         }
 
-        function _config(k, o) {
-            if (k === 'rules') {
-                new Rules(o);
-            }
-            else if (k === 'messages') {
-                new Messages(o);
-            }
-            else if (k in fieldDefaults) {
-                fieldDefaults[k] = o;
-            }
-            else {
-                defaults[k] = o;
+        var that = this;
+        var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
+        this.data = fp ? $.grep(this.data, function (item, i) {
+            for (var key in fp) {
+                var fval = fp[key].toLowerCase();
+                var value = item[key];
+                value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header,
+                    that.header.formatters[$.inArray(key, that.header.fields)],
+                    [value, item, i], value);
+
+                if (!($.inArray(key, that.header.fields) !== -1 &&
+                        (typeof value === 'string' || typeof value === 'number') &&
+                        (value + '').toLowerCase().indexOf(fval) !== -1)) {
+                    return false;
+                }
             }
-        }
+            return true;
+        }) : this.data;
     };
+}(jQuery);
 
-    /**
-     * Config themes
-     *
-     * @static setTheme
-     * @param {String|Object} name
-     * @param {Object} obj
-     * @example
-        .setTheme( themeName, themeOptions )
-        .setTheme( multiThemes )
-     */
-    Validator.setTheme = function(name, obj) {
-        if ( isObject(name) ) {
-            $.extend(true, themes, name);
-        }
-        else if ( isString(name) && isObject(obj) ) {
-            themes[name] = $.extend(themes[name], obj);
-        }
+define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) {
+    return function () {
+        var ret, fn;
+        return ret || global.$.fn.bootstrapTable.defaults;
     };
+}(this)));
 
-    /**
-     * Resource loader
-     *
-     * @static load
-     * @param {String} str
-     * @example
-        .load('local=zh-CN')        // load: local/zh-CN.js and jquery.validator.css
-        .load('local=zh-CN&css=')   // load: local/zh-CN.js
-        .load('local&css')          // load: local/en.js (set <html lang="en">) and jquery.validator.css
-        .load('local')              // dito
-     */
-    Validator.load = function(str) {
-        if (!str) return;
-        var doc = document,
-            params = {},
-            node = doc.scripts[0],
-            dir, el, ONLOAD;
+/**
+ * 将BootstrapTable的行使用自定义的模板来渲染
+ * 
+ * @author: karson
+ * @version: v0.0.1
+ *
+ * @update 2017-06-24 <http://github.com/karsonzhang/fastadmin>
+ */
 
-        str.replace(/([^?=&]+)=([^&#]*)/g, function(m, key, value){
-            params[key] = value;
-        });
+!function ($) {
+    'use strict';
 
-        dir = params.dir || Validator.dir;
+    $.extend($.fn.bootstrapTable.defaults, {
+        //是否启用模板渲染
+        templateView: false,
+        //数据格式化的模板ID或格式函数
+        templateFormatter: "itemtpl",
+        //添加的父类的class
+        templateParentClass: "row row-flex",
+        //向table添加的class
+        templateTableClass: "table-template",
 
-        if (!Validator.css && params.css !== '') {
-            el = doc.createElement('link');
-            el.rel = 'stylesheet';
-            el.href = Validator.css = dir + 'jquery.validator.css';
-            node.parentNode.insertBefore(el, node);
-        }
-        if (!Validator.local && ~str.indexOf('local') && params.local !== '') {
-            Validator.local = (params.local || doc.documentElement.lang || 'en').replace('_','-');
-            Validator.pending = 1;
-            el = doc.createElement('script');
-            el.src = dir + 'local/' + Validator.local + '.js';
-            ONLOAD = 'onload' in el ? 'onload' : 'onreadystatechange';
-            el[ONLOAD] = function() {
-                if (!el.readyState || /loaded|complete/.test(el.readyState)) {
-                    el = el[ONLOAD] = null;
-                    delete Validator.pending;
-                    $(window).triggerHandler('validatorready');
-                }
-            };
-            node.parentNode.insertBefore(el, node);
-        }
-    };
+    });
 
-    // Auto loading resources
-    (function(){
-        var scripts = document.scripts,
-            i = scripts.length, node, arr,
-            re = /(.*validator(?:\.min)?.js)(\?.*(?:local|css|dir)(?:=[\w\-]*)?)?/;
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+            _initContainer = BootstrapTable.prototype.initContainer,
+            _initBody = BootstrapTable.prototype.initBody,
+            _initRow = BootstrapTable.prototype.initRow;
 
-        while (i-- && !arr) {
-            node = scripts[i];
-            arr = (node.hasAttribute ? node.src : node.getAttribute('src',4)||'').match(re);
+    BootstrapTable.prototype.initContainer = function () {
+        _initContainer.apply(this, Array.prototype.slice.apply(arguments));
+        var that = this;
+        if (!that.options.templateView) {
+            return;
         }
+        that.options.cardView = true;
 
-        if (!arr) return;
-        Validator.dir = arr[1].split('/').slice(0, -1).join('/')+'/';
-        Validator.load(arr[2]);
-    })();
-
-    return $[NS] = Validator;
-}));
+    };
 
-/*********************************
- * Themes, rules, and i18n support
- * Locale: Chinese; 中文
- *********************************/
-(function(factory) {
-    typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) :
-    typeof define === 'function' && define.amd ? define('validator-lang',['jquery'], factory) :
-    factory(jQuery);
-}(function($) {
+    BootstrapTable.prototype.initBody = function () {
+        var that = this;
+        $.extend(that.options, {
+            showHeader: !that.options.templateView ? $.fn.bootstrapTable.defaults.showHeader : false,
+            showFooter: !that.options.templateView ? $.fn.bootstrapTable.defaults.showFooter : false,
+        });
+        $(that.$el).toggleClass(that.options.templateTableClass, that.options.templateView);
 
-    /* Global configuration
-     */
-    $.validator.config({
-        //stopOnError: true,
-        //focusCleanup: true,
-        //theme: 'yellow_right',
-        //timely: 2,
+        _initBody.apply(this, Array.prototype.slice.apply(arguments));
 
-        // Custom rules
-        rules: {
-            digits: [/^\d+$/, "请填写数字"]
-            ,letters: [/^[a-z]+$/i, "请填写字母"]
-            ,date: [/^\d{4}-\d{2}-\d{2}$/, "请填写有效的日期,格式:yyyy-mm-dd"]
-            ,time: [/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/, "请填写有效的时间,00:00到23:59之间"]
-            ,email: [/^[\w\+\-]+(\.[\w\+\-]+)*@[a-z\d\-]+(\.[a-z\d\-]+)*\.([a-z]{2,4})$/i, "请填写有效的邮箱"]
-            ,url: [/^(https?|s?ftp):\/\/\S+$/i, "请填写有效的网址"]
-            ,qq: [/^[1-9]\d{4,}$/, "请填写有效的QQ号"]
-            ,IDcard: [/^\d{6}(19|2\d)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)?$/, "请填写正确的身份证号码"]
-            ,tel: [/^(?:(?:0\d{2,3}[\- ]?[1-9]\d{6,7})|(?:[48]00[\- ]?[1-9]\d{6}))$/, "请填写有效的电话号码"]
-            ,mobile: [/^1[3-9]\d{9}$/, "请填写有效的手机号"]
-            ,zipcode: [/^\d{6}$/, "请检查邮政编码格式"]
-            ,chinese: [/^[\u0391-\uFFE5]+$/, "请填写中文字符"]
-            ,username: [/^\w{3,12}$/, "请填写3-12位数字、字母、下划线"]
-            ,password: [/^[\S]{6,16}$/, "请填写6-16位字符,不能包含空格"]
-            ,accept: function (element, params){
-                if (!params) return true;
-                var ext = params[0],
-                    value = $(element).val();
-                return (ext === '*') ||
-                       (new RegExp(".(?:" + ext + ")$", "i")).test(value) ||
-                       this.renderMsg("只接受{1}后缀的文件", ext.replace(/\|/g, ','));
-            }
-            
-        },
+        if (!that.options.templateView) {
+            return;
+        } else {
+            //由于Bootstrap是基于Table的,添加一个父类容器
+            $("> *:not(.no-records-found)", that.$body).wrapAll($("<div />").addClass(that.options.templateParentClass));
+        }
+    };
 
-        // Default error messages
-        messages: {
-            0: "此处",
-            fallback: "{0}格式不正确",
-            loading: "正在验证...",
-            error: "网络异常",
-            timeout: "请求超时",
-            required: "{0}不能为空",
-            remote: "{0}已被使用",
-            integer: {
-                '*': "请填写整数",
-                '+': "请填写正整数",
-                '+0': "请填写正整数或0",
-                '-': "请填写负整数",
-                '-0': "请填写负整数或0"
-            },
-            match: {
-                eq: "{0}与{1}不一致",
-                neq: "{0}与{1}不能相同",
-                lt: "{0}必须小于{1}",
-                gt: "{0}必须大于{1}",
-                lte: "{0}不能大于{1}",
-                gte: "{0}不能小于{1}"
-            },
-            range: {
-                rg: "请填写{1}到{2}的数",
-                gte: "请填写不小于{1}的数",
-                lte: "请填写最大{1}的数",
-                gtlt: "请填写{1}到{2}之间的数",
-                gt: "请填写大于{1}的数",
-                lt: "请填写小于{1}的数"
-            },
-            checked: {
-                eq: "请选择{1}项",
-                rg: "请选择{1}到{2}项",
-                gte: "请至少选择{1}项",
-                lte: "请最多选择{1}项"
-            },
-            length: {
-                eq: "请填写{1}个字符",
-                rg: "请填写{1}到{2}个字符",
-                gte: "请至少填写{1}个字符",
-                lte: "请最多填写{1}个字符",
-                eq_2: "",
-                rg_2: "",
-                gte_2: "",
-                lte_2: ""
-            }
+    BootstrapTable.prototype.initRow = function (item, i, data, parentDom) {
+        var that = this;
+        //如果未启用则使用原生的initRow方法
+        if (!that.options.templateView) {
+            return _initRow.apply(that, Array.prototype.slice.apply(arguments));
         }
-    });
-
-    /* Themes
-     */
-    var TPL_ARROW = '<span class="n-arrow"><b>◆</b><i>◆</i></span>';
-    $.validator.setTheme({
-        'simple_right': {
-            formClass: 'n-simple',
-            msgClass: 'n-right'
-        },
-        'simple_bottom': {
-            formClass: 'n-simple',
-            msgClass: 'n-bottom'
-        },
-        'yellow_top': {
-            formClass: 'n-yellow',
-            msgClass: 'n-top',
-            msgArrow: TPL_ARROW
-        },
-        'yellow_right': {
-            formClass: 'n-yellow',
-            msgClass: 'n-right',
-            msgArrow: TPL_ARROW
-        },
-        'yellow_right_effect': {
-            formClass: 'n-yellow',
-            msgClass: 'n-right',
-            msgArrow: TPL_ARROW,
-            msgShow: function($msgbox, type){
-                var $el = $msgbox.children();
-                if ($el.is(':animated')) return;
-                if (type === 'error') {
-                    $el.css({left: '20px', opacity: 0})
-                        .delay(100).show().stop()
-                        .animate({left: '-4px', opacity: 1}, 150)
-                        .animate({left: '3px'}, 80)
-                        .animate({left: 0}, 80);
-                } else {
-                    $el.css({left: 0, opacity: 1}).fadeIn(200);
-                }
-            },
-            msgHide: function($msgbox, type){
-                var $el = $msgbox.children();
-                $el.stop().delay(100).show()
-                    .animate({left: '20px', opacity: 0}, 300, function(){
-                        $msgbox.hide();
-                    });
-            }
+        var $content = '';
+        if (typeof that.options.templateFormatter === 'function') {
+            $content = that.options.templateFormatter.call(that, item, i, data);
+        } else {
+            var Template = require('template');
+            $content = Template(that.options.templateFormatter, {item: item, i: i, data: data});
         }
-    });
-}));
+        return $content;
+    };
 
-define('validator',['validator-core', 'validator-lang'], function (Validator, undefined) {
-    return Validator;
-});
-define('form',['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, Upload, Validator) {
-    var Form = {
-        config: {
-            fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="40" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>'
-        },
-        events: {
-            validator: function (form, success, error, submit) {
-                if (!form.is("form"))
-                    return;
-                //绑定表单事件
-                form.validator($.extend({
-                    validClass: 'has-success',
-                    invalidClass: 'has-error',
-                    bindClassTo: '.form-group',
-                    formClass: 'n-default n-bootstrap',
-                    msgClass: 'n-right',
-                    stopOnError: true,
-                    display: function (elem) {
-                        return $(elem).closest('.form-group').find(".control-label").text().replace(/\:/, '');
-                    },
-                    dataFilter: function (data) {
-                        if (data.code === 1) {
-                            return "";
-                        } else {
-                            return data.msg;
-                        }
-                    },
-                    target: function (input) {
-                        var $formitem = $(input).closest('.form-group'),
-                            $msgbox = $formitem.find('span.msg-box');
-                        if (!$msgbox.length) {
-                            return [];
-                        }
-                        return $msgbox;
-                    },
-                    valid: function (ret) {
-                        var that = this, submitBtn = $(".layer-footer [type=submit]", form);
-                        that.holdSubmit();
-                        $(".layer-footer [type=submit]", form).addClass("disabled");
-                        //验证通过提交表单
-                        Form.api.submit($(ret), function (data, ret) {
-                            that.holdSubmit(false);
-                            submitBtn.removeClass("disabled");
-                            if (false === $(this).triggerHandler("success.form", [data, ret])) {
-                                return false;
-                            }
-                            if (typeof success === 'function') {
-                                if (false === success.call($(this), data, ret)) {
-                                    return false;
-                                }
-                            }
-                            //提示及关闭当前窗口
-                            var msg = ret.hasOwnProperty("msg") && ret.msg !== "" ? ret.msg : __('Operation completed');
-                            parent.Toastr.success(msg);
-                            parent.$(".btn-refresh").trigger("click");
-                            var index = parent.Layer.getFrameIndex(window.name);
-                            parent.Layer.close(index);
-                            return false;
-                        }, function (data, ret) {
-                            that.holdSubmit(false);
-                            if (false === $(this).triggerHandler("error.form", [data, ret])) {
-                                return false;
-                            }
-                            submitBtn.removeClass("disabled");
-                            if (typeof error === 'function') {
-                                if (false === error.call($(this), data, ret)) {
-                                    return false;
-                                }
-                            }
-                        }, submit);
-                        return false;
-                    }
-                }, form.data("validator-options") || {}));
+}(jQuery);
 
-                //移除提交按钮的disabled类
-                $(".layer-footer [type=submit],.fixed-footer [type=submit],.normal-footer [type=submit]", form).removeClass("disabled");
-            },
-            selectpicker: function (form) {
-                //绑定select元素事件
-                if ($(".selectpicker", form).size() > 0) {
-                    require(['bootstrap-select', 'bootstrap-select-lang'], function () {
-                        $('.selectpicker', form).selectpicker();
-                    });
-                }
-            },
-            selectpage: function (form) {
-                //绑定selectpage元素事件
-                if ($(".selectpage", form).size() > 0) {
-                    require(['selectpage'], function () {
-                        $('.selectpage', form).selectPage({
-                            eAjaxSuccess: function (data) {
-                                data.list = typeof data.rows !== 'undefined' ? data.rows : (typeof data.list !== 'undefined' ? data.list : []);
-                                data.totalRow = typeof data.total !== 'undefined' ? data.total : (typeof data.totalRow !== 'undefined' ? data.totalRow : data.list.length);
-                                return data;
-                            }
-                        });
-                    });
-                    //给隐藏的元素添加上validate验证触发事件
-                    $(document).on("change", ".sp_hidden", function () {
-                        $(this).trigger("validate");
-                    });
-                    $(document).on("change", ".sp_input", function () {
-                        $(this).closest(".sp_container").find(".sp_hidden").trigger("change");
-                    });
-                    $(form).on("reset", function () {
-                        setTimeout(function () {
-                            $('.selectpage', form).selectPageClear();
-                        }, 1);
-                    });
-                }
-            },
-            cxselect: function (form) {
-                //绑定cxselect元素事件
-                if ($("[data-toggle='cxselect']", form).size() > 0) {
-                    require(['cxselect'], function () {
-                        $.cxSelect.defaults.jsonName = 'name';
-                        $.cxSelect.defaults.jsonValue = 'value';
-                        $.cxSelect.defaults.jsonSpace = 'data';
-                        $("[data-toggle='cxselect']", form).cxSelect();
-                    });
-                }
-            },
-            citypicker: function (form) {
-                //绑定城市远程插件
-                if ($("[data-toggle='city-picker']", form).size() > 0) {
-                    require(['citypicker'], function () {
-                    });
-                }
-            },
-            datetimepicker: function (form) {
-                //绑定日期时间元素事件
-                if ($(".datetimepicker", form).size() > 0) {
-                    require(['bootstrap-datetimepicker'], function () {
-                        var options = {
-                            format: 'YYYY-MM-DD HH:mm:ss',
-                            icons: {
-                                time: 'fa fa-clock-o',
-                                date: 'fa fa-calendar',
-                                up: 'fa fa-chevron-up',
-                                down: 'fa fa-chevron-down',
-                                previous: 'fa fa-chevron-left',
-                                next: 'fa fa-chevron-right',
-                                today: 'fa fa-history',
-                                clear: 'fa fa-trash',
-                                close: 'fa fa-remove'
-                            },
-                            showTodayButton: true,
-                            showClose: true
-                        };
-                        $('.datetimepicker', form).parent().css('position', 'relative');
-                        $('.datetimepicker', form).datetimepicker(options);
-                    });
+define("bootstrap-table-template", ["bootstrap-table","template"], (function (global) {
+    return function () {
+        var ret, fn;
+        return ret || global.$.fn.bootstrapTable.defaults;
+    };
+}(this)));
+
+define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table', 'bootstrap-table-lang', 'bootstrap-table-export', 'bootstrap-table-commonsearch', 'bootstrap-table-template'], function ($, undefined, Moment) {
+    var Table = {
+        list: {},
+        // Bootstrap-table 基础配置
+        defaults: {
+            url: '',
+            sidePagination: 'server',
+            method: 'get', //请求方法
+            toolbar: ".toolbar", //工具栏
+            search: true, //是否启用快速搜索
+            cache: false,
+            commonSearch: true, //是否启用通用搜索
+            searchFormVisible: false, //是否始终显示搜索表单
+            titleForm: '', //为空则不显示标题,不定义默认显示:普通搜索
+            idTable: 'commonTable',
+            showExport: true,
+            exportDataType: "all",
+            exportTypes: ['json', 'xml', 'csv', 'txt', 'doc', 'excel'],
+            pageSize: 10,
+            pageList: [10, 25, 50, 'All'],
+            pagination: true,
+            clickToSelect: true, //是否启用点击选中
+            singleSelect: false, //是否启用单选
+            showRefresh: false,
+            locale: 'zh-CN',
+            showToggle: true,
+            showColumns: true,
+            pk: 'id',
+            sortName: 'id',
+            sortOrder: 'desc',
+            paginationFirstText: __("First"),
+            paginationPreText: __("Previous"),
+            paginationNextText: __("Next"),
+            paginationLastText: __("Last"),
+            cardView: false, //卡片视图
+            checkOnInit: true, //是否在初始化时判断
+            escape: true, //是否对内容进行转义
+            extend: {
+                index_url: '',
+                add_url: '',
+                edit_url: '',
+                del_url: '',
+                import_url: '',
+                multi_url: '',
+                dragsort_url: 'ajax/weigh',
+            }
+        },
+        // Bootstrap-table 列配置
+        columnDefaults: {
+            align: 'center',
+            valign: 'middle',
+        },
+        config: {
+            firsttd: 'tbody tr td:first-child:not(:has(div.card-views))',
+            toolbar: '.toolbar',
+            refreshbtn: '.btn-refresh',
+            addbtn: '.btn-add',
+            editbtn: '.btn-edit',
+            delbtn: '.btn-del',
+            importbtn: '.btn-import',
+            multibtn: '.btn-multi',
+            disabledbtn: '.btn-disabled',
+            editonebtn: '.btn-editone',
+            dragsortfield: 'weigh',
+        },
+        api: {
+            init: function (defaults, columnDefaults, locales) {
+                defaults = defaults ? defaults : {};
+                columnDefaults = columnDefaults ? columnDefaults : {};
+                locales = locales ? locales : {};
+                // 如果是iOS设备则启用卡片视图
+                if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
+                    Table.defaults.cardView = true;
                 }
+                // 写入bootstrap-table默认配置
+                $.extend(true, $.fn.bootstrapTable.defaults, Table.defaults, defaults);
+                // 写入bootstrap-table column配置
+                $.extend($.fn.bootstrapTable.columnDefaults, Table.columnDefaults, columnDefaults);
+                // 写入bootstrap-table locale配置
+                $.extend($.fn.bootstrapTable.locales[Table.defaults.locale], {
+                    formatCommonSearch: function () {
+                        return __('Common search');
+                    },
+                    formatCommonSubmitButton: function () {
+                        return __('Submit');
+                    },
+                    formatCommonResetButton: function () {
+                        return __('Reset');
+                    },
+                    formatCommonCloseButton: function () {
+                        return __('Close');
+                    },
+                    formatCommonChoose: function () {
+                        return __('Choose');
+                    }
+                }, locales);
             },
-            daterangepicker: function (form) {
-                //绑定日期时间元素事件
-                if ($(".datetimerange", form).size() > 0) {
-                    require(['bootstrap-daterangepicker'], function () {
-                        var ranges = {};
-                        ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')];
-                        ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')];
-                        ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')];
-                        ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')];
-                        ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')];
-                        ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')];
-                        var options = {
-                            timePicker: false,
-                            autoUpdateInput: false,
-                            timePickerSeconds: true,
-                            timePicker24Hour: true,
-                            autoApply: true,
-                            locale: {
-                                format: 'YYYY-MM-DD HH:mm:ss',
-                                customRangeLabel: __("Custom Range"),
-                                applyLabel: __("Apply"),
-                                cancelLabel: __("Clear"),
-                            },
-                            ranges: ranges,
-                        };
-                        var origincallback = function (start, end) {
-                            $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format));
-                            $(this.element).trigger('blur');
-                        };
-                        $(".datetimerange", form).each(function () {
-                            var callback = typeof $(this).data('callback') == 'function' ? $(this).data('callback') : origincallback;
-                            $(this).on('apply.daterangepicker', function (ev, picker) {
-                                callback.call(picker, picker.startDate, picker.endDate);
+            // 绑定事件
+            bindevent: function (table) {
+                //Bootstrap-table的父元素,包含table,toolbar,pagnation
+                var parenttable = table.closest('.bootstrap-table');
+                //Bootstrap-table配置
+                var options = table.bootstrapTable('getOptions');
+                //Bootstrap操作区
+                var toolbar = $(options.toolbar, parenttable);
+                //当刷新表格时
+                table.on('load-error.bs.table', function (status, res, e) {
+                    if (e.status === 0) {
+                        return;
+                    }
+                    Toastr.error(__('Unknown data format'));
+                });
+                //当刷新表格时
+                table.on('refresh.bs.table', function (e, settings, data) {
+                    $(Table.config.refreshbtn, toolbar).find(".fa").addClass("fa-spin");
+                });
+                //当双击单元格时
+                table.on('dbl-click-row.bs.table', function (e, row, element, field) {
+                    $(Table.config.editonebtn, element).trigger("click");
+                });
+                //当内容渲染完成后
+                table.on('post-body.bs.table', function (e, settings, json, xhr) {
+                    $(Table.config.refreshbtn, toolbar).find(".fa").removeClass("fa-spin");
+                    $(Table.config.disabledbtn, toolbar).toggleClass('disabled', true);
+                    if ($(Table.config.firsttd, table).find("input[type='checkbox'][data-index]").size() > 0) {
+                        // 挺拽选择,需要重新绑定事件
+                        require(['drag', 'drop'], function () {
+                            $(Table.config.firsttd, table).drag("start", function (ev, dd) {
+                                return $('<div class="selection" />').css('opacity', .65).appendTo(document.body);
+                            }).drag(function (ev, dd) {
+                                $(dd.proxy).css({
+                                    top: Math.min(ev.pageY, dd.startY),
+                                    left: Math.min(ev.pageX, dd.startX),
+                                    height: Math.abs(ev.pageY - dd.startY),
+                                    width: Math.abs(ev.pageX - dd.startX)
+                                });
+                            }).drag("end", function (ev, dd) {
+                                $(dd.proxy).remove();
                             });
-                            $(this).on('cancel.daterangepicker', function (ev, picker) {
-                                $(this).val('').trigger('blur');
+                            $(Table.config.firsttd, table).drop("start", function () {
+                                Table.api.toggleattr(this);
+                            }).drop(function () {
+                                Table.api.toggleattr(this);
+                            }).drop("end", function () {
+                                Table.api.toggleattr(this);
+                            });
+                            $.drop({
+                                multi: true
+                            });
+                        });
+                    }
+                });
+                // 处理选中筛选框后按钮的状态统一变更
+                table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
+                    var ids = Table.api.selectedids(table);
+                    $(Table.config.disabledbtn, toolbar).toggleClass('disabled', !ids.length);
+                });
+                // 刷新按钮事件
+                $(toolbar).on('click', Table.config.refreshbtn, function () {
+                    table.bootstrapTable('refresh');
+                });
+                // 添加按钮事件
+                $(toolbar).on('click', Table.config.addbtn, function () {
+                    var ids = Table.api.selectedids(table);
+                    var url = options.extend.add_url;
+                    if (url.indexOf("{ids}") !== -1) {
+                        url = Table.api.replaceurl(url, {ids: ids.length > 0 ? ids.join(",") : 0}, table);
+                    }
+                    Fast.api.open(url, __('Add'), $(this).data() || {});
+                });
+                // 导入按钮事件
+                if ($(Table.config.importbtn, toolbar).size() > 0) {
+                    require(['upload'], function (Upload) {
+                        Upload.api.plupload($(Table.config.importbtn, toolbar), function (data, ret) {
+                            Fast.api.ajax({
+                                url: options.extend.import_url,
+                                data: {file: data.url},
+                            }, function (data, ret) {
+                                table.bootstrapTable('refresh');
                             });
-                            $(this).daterangepicker($.extend({}, options, $(this).data()), callback);
                         });
                     });
                 }
-            },
-            plupload: function (form) {
-                //绑定plupload上传元素事件
-                if ($(".plupload", form).size() > 0) {
-                    Upload.api.plupload($(".plupload", form));
-                }
-            },
-            faselect: function (form) {
-                //绑定fachoose选择附件事件
-                if ($(".fachoose", form).size() > 0) {
-                    $(".fachoose", form).on('click', function () {
-                        var that = this;
-                        var multiple = $(this).data("multiple") ? $(this).data("multiple") : false;
-                        var mimetype = $(this).data("mimetype") ? $(this).data("mimetype") : '';
-                        parent.Fast.api.open("general/attachment/select?element_id=" + $(this).attr("id") + "&multiple=" + multiple + "&mimetype=" + mimetype, __('Choose'), {
-                            callback: function (data) {
-                                var button = $("#" + $(that).attr("id"));
-                                var maxcount = $(button).data("maxcount");
-                                var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
-                                maxcount = typeof maxcount !== "undefined" ? maxcount : 0;
-                                if (input_id && data.multiple) {
-                                    var urlArr = [];
-                                    var inputObj = $("#" + input_id);
-                                    var value = $.trim(inputObj.val());
-                                    if (value !== "") {
-                                        urlArr.push(inputObj.val());
+                // 批量编辑按钮事件
+                $(toolbar).on('click', Table.config.editbtn, function () {
+                    var that = this;
+                    //循环弹出多个编辑框
+                    $.each(table.bootstrapTable('getSelections'), function (index, row) {
+                        var url = options.extend.edit_url;
+                        row = $.extend({}, row ? row : {}, {ids: row[options.pk]});
+                        var url = Table.api.replaceurl(url, row, table);
+                        Fast.api.open(url, __('Edit'), $(that).data() || {});
+                    });
+                });
+                // 批量操作按钮事件
+                $(toolbar).on('click', Table.config.multibtn, function () {
+                    var ids = Table.api.selectedids(table);
+                    Table.api.multi($(this).data("action"), ids, table, this);
+                });
+                // 批量删除按钮事件
+                $(toolbar).on('click', Table.config.delbtn, function () {
+                    var that = this;
+                    var ids = Table.api.selectedids(table);
+                    Layer.confirm(
+                        __('Are you sure you want to delete the %s selected item?', ids.length),
+                        {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
+                        function (index) {
+                            Table.api.multi("del", ids, table, that);
+                            Layer.close(index);
+                        }
+                    );
+                });
+                // 拖拽排序
+                require(['dragsort'], function () {
+                    //绑定拖动排序
+                    $("tbody", table).dragsort({
+                        itemSelector: 'tr:visible',
+                        dragSelector: "a.btn-dragsort",
+                        dragEnd: function (a, b) {
+                            var element = $("a.btn-dragsort", this);
+                            var data = table.bootstrapTable('getData');
+                            var current = data[parseInt($(this).data("index"))];
+                            var options = table.bootstrapTable('getOptions');
+                            //改变的值和改变的ID集合
+                            var ids = $.map($("tbody tr:visible", table), function (tr) {
+                                return data[parseInt($(tr).data("index"))][options.pk];
+                            });
+                            var changeid = current[options.pk];
+                            var pid = typeof current.pid != 'undefined' ? current.pid : '';
+                            var params = {
+                                url: table.bootstrapTable('getOptions').extend.dragsort_url,
+                                data: {
+                                    ids: ids.join(','),
+                                    changeid: changeid,
+                                    pid: pid,
+                                    field: Table.config.dragsortfield,
+                                    orderway: options.sortOrder,
+                                    table: options.extend.table
+                                }
+                            };
+                            Fast.api.ajax(params, function (data, ret) {
+                                var success = $(element).data("success") || $.noop;
+                                if (typeof success === 'function') {
+                                    if (false === success.call(element, data, ret)) {
+                                        return false;
                                     }
-                                    urlArr.push(data.url)
-                                    var result = urlArr.join(",");
-                                    if (maxcount > 0) {
-                                        var nums = value === '' ? 0 : value.split(/\,/).length;
-                                        var files = data.url !== "" ? data.url.split(/\,/) : [];
-                                        var remains = maxcount - nums;
-                                        if (files.length > remains) {
-                                            Toastr.error(__('You can choose up to %d file%s', remains));
-                                            return false;
-                                        }
+                                }
+                                table.bootstrapTable('refresh');
+                            }, function () {
+                                var error = $(element).data("error") || $.noop;
+                                if (typeof error === 'function') {
+                                    if (false === error.call(element, data, ret)) {
+                                        return false;
                                     }
-                                    inputObj.val(result).trigger("change");
-                                } else {
-                                    $("#" + input_id).val(data.url).trigger("change");
                                 }
-                            }
-                        });
-                        return false;
+                                table.bootstrapTable('refresh');
+                            });
+                        },
+                        placeHolderTemplate: ""
                     });
+                });
+                $(table).on("click", "input[data-id][name='checkbox']", function (e) {
+                    var ids = $(this).data("id");
+                    var row = Table.api.getrowbyid(ids);
+                    table.trigger('check.bs.table', [row, this]);
+                });
+                $(table).on("click", "[data-id].btn-change", function (e) {
+                    e.preventDefault();
+                    Table.api.multi($(this).data("action") ? $(this).data("action") : '', [$(this).data("id")], table, this);
+                });
+                $(table).on("click", "[data-id].btn-edit", function (e) {
+                    e.preventDefault();
+                    var ids = $(this).data("id");
+                    var row = Table.api.getrowbyid(ids);
+                    row.ids = ids;
+                    var url = Table.api.replaceurl(options.extend.edit_url, row, table);
+                    Fast.api.open(url, __('Edit'), $(this).data() || {});
+                });
+                $(table).on("click", "[data-id].btn-del", function (e) {
+                    e.preventDefault();
+                    var id = $(this).data("id");
+                    var that = this;
+                    Layer.confirm(
+                        __('Are you sure you want to delete this item?'),
+                        {icon: 3, title: __('Warning'), shadeClose: true},
+                        function (index) {
+                            Table.api.multi("del", id, table, that);
+                            Layer.close(index);
+                        }
+                    );
+                });
+                var id = table.attr("id");
+                Table.list[id] = table;
+                return table;
+            },
+            // 批量操作请求
+            multi: function (action, ids, table, element) {
+                var options = table.bootstrapTable('getOptions');
+                var data = element ? $(element).data() : {};
+                var ids = ($.isArray(ids) ? ids.join(",") : ids);
+                var url = typeof data.url !== "undefined" ? data.url : (action == "del" ? options.extend.del_url : options.extend.multi_url);
+                url = this.replaceurl(url, {ids: ids}, table);
+                var params = typeof data.params !== "undefined" ? (typeof data.params == 'object' ? $.param(data.params) : data.params) : '';
+                var options = {url: url, data: {action: action, ids: ids, params: params}};
+                Fast.api.ajax(options, function (data, ret) {
+                    var success = $(element).data("success") || $.noop;
+                    if (typeof success === 'function') {
+                        if (false === success.call(element, data, ret)) {
+                            return false;
+                        }
+                    }
+                    table.bootstrapTable('refresh');
+                }, function (data, ret) {
+                    var error = $(element).data("error") || $.noop;
+                    if (typeof error === 'function') {
+                        if (false === error.call(element, data, ret)) {
+                            return false;
+                        }
+                    }
+                });
+            },
+            // 单元格元素事件
+            events: {
+                operate: {
+                    'click .btn-editone': function (e, value, row, index) {
+                        e.stopPropagation();
+                        e.preventDefault();
+                        var table = $(this).closest('table');
+                        var options = table.bootstrapTable('getOptions');
+                        var ids = row[options.pk];
+                        row = $.extend({}, row ? row : {}, {ids: ids});
+                        var url = options.extend.edit_url;
+                        Fast.api.open(Table.api.replaceurl(url, row, table), __('Edit'), $(this).data() || {});
+                    },
+                    'click .btn-delone': function (e, value, row, index) {
+                        e.stopPropagation();
+                        e.preventDefault();
+                        var that = this;
+                        var top = $(that).offset().top - $(window).scrollTop();
+                        var left = $(that).offset().left - $(window).scrollLeft() - 260;
+                        if (top + 154 > $(window).height()) {
+                            top = top - 154;
+                        }
+                        if ($(window).width() < 480) {
+                            top = left = undefined;
+                        }
+                        Layer.confirm(
+                            __('Are you sure you want to delete this item?'),
+                            {icon: 3, title: __('Warning'), offset: [top, left], shadeClose: true},
+                            function (index) {
+                                var table = $(that).closest('table');
+                                var options = table.bootstrapTable('getOptions');
+                                Table.api.multi("del", row[options.pk], table, that);
+                                Layer.close(index);
+                            }
+                        );
+                    }
                 }
             },
-            fieldlist: function (form) {
-                //绑定fieldlist
-                if ($(".fieldlist", form).size() > 0) {
-                    require(['dragsort', 'template'], function (undefined, Template) {
-                        //刷新隐藏textarea的值
-                        var refresh = function (name) {
-                            var data = {};
-                            var textarea = $("textarea[name='" + name + "']", form);
-                            var container = textarea.closest("dl");
-                            var template = container.data("template");
-                            console.log(name, container);
-                            $.each($("input,select", container).serializeArray(), function (i, j) {
-                                var reg = /\[(\w+)\]\[(\w+)\]$/g;
-                                var match = reg.exec(j.name);
-                                if (!match)
-                                    return true;
-                                match[1] = "x" + parseInt(match[1]);
-                                if (typeof data[match[1]] == 'undefined') {
-                                    data[match[1]] = {};
-                                }
-                                data[match[1]][match[2]] = j.value;
-                            });
-                            var result = template ? [] : {};
-                            $.each(data, function (i, j) {
-                                if (j) {
-                                    if (!template) {
-                                        if (j.key != '') {
-                                            result[j.key] = j.value;
-                                        }
-                                    } else {
-                                        result.push(j);
-                                    }
-                                }
-                            });
-                            textarea.val(JSON.stringify(result));
-                        };
-                        //监听文本框改变事件
-                        $(document).on('change keyup', ".fieldlist input,.fieldlist textarea,.fieldlist select", function () {
-                            refresh($(this).closest("dl").data("name"));
-                        });
-                        //追加控制
-                        $(".fieldlist", form).on("click", ".btn-append", function (e, row) {
-                            var container = $(this).closest("dl");
-                            var index = container.data("index");
-                            var name = container.data("name");
-                            var template = container.data("template");
-                            var data = container.data();
-                            index = index ? parseInt(index) : 0;
-                            container.data("index", index + 1);
-                            var row = row ? row : {};
-                            var vars = {index: index, name: name, data: data, row: row};
-                            var html = template ? Template(template, vars) : Template.render(Form.config.fieldlisttpl, vars);
-                            $(html).insertBefore($(this).closest("dd"));
-                            $(this).trigger("fa.event.appendfieldlist", $(this).closest("dd").prev());
-                        });
-                        //移除控制
-                        $(".fieldlist", form).on("click", "dd .btn-remove", function () {
-                            var container = $(this).closest("dl");
-                            $(this).closest("dd").remove();
-                            refresh(container.data("name"));
+            // 单元格数据格式化
+            formatter: {
+                icon: function (value, row, index) {
+                    if (!value)
+                        return '';
+                    value = value.indexOf(" ") > -1 ? value : "fa fa-" + value;
+                    //渲染fontawesome图标
+                    return '<i class="' + value + '"></i> ' + value;
+                },
+                image: function (value, row, index) {
+                    value = value ? value : '/assets/img/blank.gif';
+                    var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center';
+                    return '<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />';
+                },
+                images: function (value, row, index) {
+                    value = value === null ? '' : value.toString();
+                    var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center';
+                    var arr = value.split(',');
+                    var html = [];
+                    $.each(arr, function (i, value) {
+                        value = value ? value : '/assets/img/blank.gif';
+                        html.push('<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />');
+                    });
+                    return html.join(' ');
+                },
+                status: function (value, row, index) {
+                    //颜色状态数组,可使用red/yellow/aqua/blue/navy/teal/olive/lime/fuchsia/purple/maroon
+                    var colorArr = {normal: 'success', hidden: 'grey', deleted: 'danger', locked: 'info'};
+                    //如果字段列有定义custom
+                    if (typeof this.custom !== 'undefined') {
+                        colorArr = $.extend(colorArr, this.custom);
+                    }
+                    value = value === null ? '' : value.toString();
+                    var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary';
+                    value = value.charAt(0).toUpperCase() + value.slice(1);
+                    //渲染状态
+                    var html = '<span class="text-' + color + '"><i class="fa fa-circle"></i> ' + __(value) + '</span>';
+                    return html;
+                },
+                url: function (value, row, index) {
+                    return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>';
+                },
+                search: function (value, row, index) {
+                    return '<a href="javascript:;" class="searchit" data-field="' + this.field + '" data-value="' + value + '">' + value + '</a>';
+                },
+                addtabs: function (value, row, index) {
+                    var url = Table.api.replaceurl(this.url, row, this.table);
+                    var title = this.atitle ? this.atitle : __("Search %s", value);
+                    return '<a href="' + Fast.api.fixurl(url) + '" class="addtabsit" data-value="' + value + '" title="' + title + '">' + value + '</a>';
+                },
+                dialog: function (value, row, index) {
+                    var url = Table.api.replaceurl(this.url, row, this.table);
+                    var title = this.atitle ? this.atitle : __("View %s", value);
+                    return '<a href="' + Fast.api.fixurl(url) + '" class="dialogit" data-value="' + value + '" title="' + title + '">' + value + '</a>';
+                },
+                flag: function (value, row, index) {
+                    value = value === null ? '' : value.toString();
+                    var colorArr = {index: 'success', hot: 'warning', recommend: 'danger', 'new': 'info'};
+                    //如果字段列有定义custom
+                    if (typeof this.custom !== 'undefined') {
+                        colorArr = $.extend(colorArr, this.custom);
+                    }
+                    if (typeof this.customField !== 'undefined' && typeof row[this.customField] !== 'undefined') {
+                        value = row[this.customField];
+                    }
+                    //渲染Flag
+                    var html = [];
+                    var arr = value.split(',');
+                    $.each(arr, function (i, value) {
+                        value = value === null ? '' : value.toString();
+                        if (value == '')
+                            return true;
+                        var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary';
+                        value = value.charAt(0).toUpperCase() + value.slice(1);
+                        html.push('<span class="label label-' + color + '">' + __(value) + '</span>');
+                    });
+                    return html.join(' ');
+                },
+                label: function (value, row, index) {
+                    return Table.api.formatter.flag.call(this, value, row, index);
+                },
+                datetime: function (value, row, index) {
+                    return value ? Moment(parseInt(value) * 1000).format("YYYY-MM-DD HH:mm:ss") : __('None');
+                },
+                operate: function (value, row, index) {
+                    var table = this.table;
+                    // 操作配置
+                    var options = table ? table.bootstrapTable('getOptions') : {};
+                    // 默认按钮组
+                    var buttons = $.extend([], this.buttons || []);
+
+                    if (options.extend.dragsort_url !== '') {
+                        buttons.push({
+                            name: 'dragsort',
+                            icon: 'fa fa-arrows',
+                            title: __('Drag to sort'),
+                            classname: 'btn btn-xs btn-primary btn-dragsort'
                         });
-                        //拖拽排序
-                        $("dl.fieldlist", form).dragsort({
-                            itemSelector: 'dd',
-                            dragSelector: ".btn-fdragsort",
-                            dragEnd: function () {
-                                refresh($(this).closest("dl").data("name"));
-                            },
-                            placeHolderTemplate: "<dd></dd>"
+                    }
+                    if (options.extend.edit_url !== '') {
+                        buttons.push({
+                            name: 'edit',
+                            icon: 'fa fa-pencil',
+                            title: __('Edit'),
+                            classname: 'btn btn-xs btn-success btn-editone',
+                            url: options.extend.edit_url
                         });
-                        //渲染数据
-                        $(".fieldlist", form).each(function () {
-                            var container = this;
-                            var textarea = $("textarea[name='" + $(this).data("name") + "']", form);
-                            if (textarea.val() == '') {
-                                return true;
-                            }
-                            var template = $(this).data("template");
-                            $.each(JSON.parse(textarea.val()), function (i, j) {
-                                $(".btn-append", container).trigger('click', template ? j : {
-                                    key: i,
-                                    value: j
-                                });
-                            });
+                    }
+                    if (options.extend.del_url !== '') {
+                        buttons.push({
+                            name: 'del',
+                            icon: 'fa fa-trash',
+                            title: __('Del'),
+                            classname: 'btn btn-xs btn-danger btn-delone'
                         });
-                    });
+                    }
+                    return Table.api.buttonlink(this, buttons, value, row, index, 'operate');
+                },
+                buttons: function (value, row, index) {
+                    // 默认按钮组
+                    var buttons = $.extend([], this.buttons || []);
+                    return Table.api.buttonlink(this, buttons, value, row, index, 'buttons');
                 }
             },
-            bindevent: function (form) {
+            buttonlink: function (column, buttons, value, row, index, type) {
+                var table = column.table;
+                type = typeof type === 'undefined' ? 'buttons' : type;
+                var options = table ? table.bootstrapTable('getOptions') : {};
+                var html = [];
+                var hidden, url, classname, icon, text, title, refresh, confirm, extend;
+                var fieldIndex = column.fieldIndex;
 
-            }
-        },
-        api: {
-            submit: function (form, success, error, submit) {
-                if (form.size() === 0)
-                    return Toastr.error("表单未初始化完成,无法提交");
-                if (typeof submit === 'function') {
-                    if (false === submit.call(form)) {
-                        return false;
-                    }
-                }
-                var type = form.attr("method").toUpperCase();
-                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
-                url = form.attr("action");
-                url = url ? url : location.href;
-                //修复当存在多选项元素时提交的BUG
-                var params = {};
-                var multipleList = $("[name$='[]']", form);
-                if (multipleList.size() > 0) {
-                    var postFields = form.serializeArray().map(function (obj) {
-                        return $(obj).prop("name");
-                    });
-                    $.each(multipleList, function (i, j) {
-                        if (postFields.indexOf($(this).prop("name")) < 0) {
-                            params[$(this).prop("name")] = '';
-                        }
-                    });
-                }
-                //调用Ajax请求方法
-                Fast.api.ajax({
-                    type: type,
-                    url: url,
-                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : ''),
-                    dataType: 'json',
-                    complete: function (xhr) {
-                        var token = xhr.getResponseHeader('__token__');
-                        if (token) {
-                            $("input[name='__token__']", form).val(token);
-                        }
-                    }
-                }, function (data, ret) {
-                    $('.form-group', form).removeClass('has-feedback has-success has-error');
-                    if (data && typeof data === 'object') {
-                        //刷新客户端token
-                        if (typeof data.token !== 'undefined') {
-                            $("input[name='__token__']", form).val(data.token);
+                $.each(buttons, function (i, j) {
+                    if (type === 'operate') {
+                        if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') {
+                            return true;
                         }
-                        //调用客户端事件
-                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
-                            data.callback.call(form, data);
+                        if (['add', 'edit', 'del', 'multi', 'dragsort'].indexOf(j.name) > -1 && !options.extend[j.name + "_url"]) {
+                            return true;
                         }
                     }
-                    if (typeof success === 'function') {
-                        if (false === success.call(form, data, ret)) {
-                            return false;
+                    var attr = table.data(type + "-" + j.name);
+                    if (typeof attr === 'undefined' || attr) {
+                        hidden = typeof j.hidden === 'function' ? j.hidden.call(table, row, j) : (j.hidden ? j.hidden : false);
+                        if (hidden) {
+                            return true;
                         }
+                        url = j.url ? j.url : '';
+                        url = typeof url === 'function' ? url.call(table, row, j) : (url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;');
+                        classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one';
+                        icon = j.icon ? j.icon : '';
+                        text = j.text ? j.text : '';
+                        title = j.title ? j.title : text;
+                        refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : '';
+                        confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : '';
+                        extend = j.extend ? j.extend : '';
+                        html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>');
                     }
-                }, function (data, ret) {
-                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
-                        $("input[name='__token__']", form).val(data.token);
-                    }
-                    if (typeof error === 'function') {
-                        if (false === error.call(form, data, ret)) {
-                            return false;
+                });
+                return html.join(' ');
+            },
+            //替换URL中的数据
+            replaceurl: function (url, row, table) {
+                var options = table ? table.bootstrapTable('getOptions') : null;
+                var ids = options ? row[options.pk] : 0;
+                row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0);
+                //自动添加ids参数
+                url = !url.match(/\{ids\}/i) ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url;
+                url = url.replace(/\{(.*?)\}/gi, function (matched) {
+                    matched = matched.substring(1, matched.length - 1);
+                    if (matched.indexOf(".") !== -1) {
+                        var temp = row;
+                        var arr = matched.split(/\./);
+                        for (var i = 0; i < arr.length; i++) {
+                            if (typeof temp[arr[i]] !== 'undefined') {
+                                temp = temp[arr[i]];
+                            }
                         }
+                        return typeof temp === 'object' ? '' : temp;
                     }
+                    return row[matched];
                 });
-                return false;
+                return url;
             },
-            bindevent: function (form, success, error, submit) {
-
-                form = typeof form === 'object' ? form : $(form);
-
-                var events = Form.events;
-
-                events.bindevent(form);
-
-                events.validator(form, success, error, submit);
-
-                events.selectpicker(form);
-
-                events.daterangepicker(form);
-
-                events.selectpage(form);
-
-                events.cxselect(form);
-
-                events.citypicker(form);
-
-                events.datetimepicker(form);
-
-                events.plupload(form);
-
-                events.faselect(form);
-
-                events.fieldlist(form);
+            // 获取选中的条目ID集合
+            selectedids: function (table) {
+                var options = table.bootstrapTable('getOptions');
+                if (options.templateView) {
+                    return $.map($("input[data-id][name='checkbox']:checked"), function (dom) {
+                        return $(dom).data("id");
+                    });
+                } else {
+                    return $.map(table.bootstrapTable('getSelections'), function (row) {
+                        return row[options.pk];
+                    });
+                }
             },
-            custom: {}
+            // 切换复选框状态
+            toggleattr: function (table) {
+                $("input[type='checkbox']", table).trigger('click');
+            },
+            // 根据行索引获取行数据
+            getrowdata: function (table, index) {
+                index = parseInt(index);
+                var data = table.bootstrapTable('getData');
+                return typeof data[index] !== 'undefined' ? data[index] : null;
+            },
+            // 根据行索引获取行数据
+            getrowbyindex: function (table, index) {
+                return Table.api.getrowdata(table, index);
+            },
+            // 根据主键ID获取行数据
+            getrowbyid: function (table, id) {
+                var row = {};
+                var options = table.bootstrapTable("getOptions");
+                $.each(table.bootstrapTable('getData'), function (i, j) {
+                    if (j[options.pk] == id) {
+                        row = j;
+                        return false;
+                    }
+                });
+                return row;
+            }
         },
     };
-    return Form;
+    return Table;
 });
+
 // jQuery List DragSort v0.5.2
 // Website: http://dragsort.codeplex.com/
 // License: http://dragsort.codeplex.com/license
diff --git a/public/assets/js/require-form.js b/public/assets/js/require-form.js
index c1714de..0ad33b9 100755
--- a/public/assets/js/require-form.js
+++ b/public/assets/js/require-form.js
@@ -1,7 +1,7 @@
 define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, Upload, Validator) {
     var Form = {
         config: {
-            fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="40" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>'
+            fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="30" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>'
         },
         events: {
             validator: function (form, success, error, submit) {
@@ -26,6 +26,10 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U
                         }
                     },
                     target: function (input) {
+                        var target = $(input).data("target");
+                        if (target && $(target).size() > 0) {
+                            return $(target);
+                        }
                         var $formitem = $(input).closest('.form-group'),
                             $msgbox = $formitem.find('span.msg-box');
                         if (!$msgbox.length) {
@@ -282,7 +286,7 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U
                             refresh($(this).closest("dl").data("name"));
                         });
                         //追加控制
-                        $(".fieldlist", form).on("click", ".btn-append", function (e, row) {
+                        $(".fieldlist", form).on("click", ".btn-append,.append", function (e, row) {
                             var container = $(this).closest("dl");
                             var index = container.data("index");
                             var name = container.data("name");
@@ -305,7 +309,7 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U
                         //拖拽排序
                         $("dl.fieldlist", form).dragsort({
                             itemSelector: 'dd',
-                            dragSelector: ".btn-fdragsort",
+                            dragSelector: ".btn-dragsort",
                             dragEnd: function () {
                                 refresh($(this).closest("dl").data("name"));
                             },
@@ -319,8 +323,13 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U
                                 return true;
                             }
                             var template = $(this).data("template");
-                            $.each(JSON.parse(textarea.val()), function (i, j) {
-                                $(".btn-append", container).trigger('click', template ? j : {
+                            var json = {};
+                            try {
+                                json = JSON.parse(textarea.val());
+                            } catch (e) {
+                            }
+                            $.each(json, function (i, j) {
+                                $(".btn-append,.append", container).trigger('click', template ? j : {
                                     key: i,
                                     value: j
                                 });
diff --git a/public/assets/js/require-frontend.min.js b/public/assets/js/require-frontend.min.js
index 7b9bc17..09a3e1f 100644
--- a/public/assets/js/require-frontend.min.js
+++ b/public/assets/js/require-frontend.min.js
@@ -973,7 +973,9 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u
     return Fast;
 });
 
-define('frontend',['fast'], function (Fast) {
+/*!art-template - Template Engine | http://aui.github.com/artTemplate/*/
+!function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"&#60;",">":"&#62;",'"':"&#34;","'":"&#39;","&":"&#38;"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}();
+define('frontend',['fast', 'template'], function (Fast, Template) {
     var Frontend = {
         api: Fast.api,
         init: function () {
@@ -1028,6 +1030,8 @@ define('frontend',['fast'], function (Fast) {
         }
     };
     Frontend.api = $.extend(Fast.api, Frontend.api);
+    //将Template渲染至全局,以便于在子框架中调用
+    window.Template = Template;
     //将Frontend渲染至全局,以便于在子框架中调用
     window.Frontend = Frontend;
 
diff --git a/public/assets/less/backend.less b/public/assets/less/backend.less
index 65be1f6..7df760b 100644
--- a/public/assets/less/backend.less
+++ b/public/assets/less/backend.less
@@ -847,4 +847,8 @@ form.form-horizontal .control-label {
             margin: 2px 0 0;
         }
     }
+}
+
+.wipecache li a {
+    color:#444444!important;
 }
\ No newline at end of file
--
libgit2 0.24.0